Mixed-Mode Synchronous Playback

ABSTRACT

Disclosed herein are playback devices, groups of playback devices, and methods of operating playback devices and groupings thereof to cause the playback devices in a mixed-mode configuration to play audio content in synchrony with each other.

FIELD OF THE DISCLOSURE

The present disclosure is related to consumer goods and, moreparticularly, to methods, systems, products, features, services, andother elements directed to media playback or some aspect thereof.

BACKGROUND

Options for accessing and listening to digital audio in an out-loudsetting were limited until in 2002, when SONOS, Inc. began developmentof a new type of playback system. Sonos then filed one of its firstpatent applications in 2003, entitled “Method for Synchronizing AudioPlayback between Multiple Networked Devices,” and began offering itsfirst media playback systems for sale in 2005. The Sonos Wireless HomeSound System enables people to experience music from many sources viaone or more networked playback devices. Through a software controlapplication installed on a controller (e.g., smartphone, tablet,computer, voice input device), one can play what she wants in any roomhaving a networked playback device. Media content (e.g., songs,podcasts, video sound) can be streamed to playback devices such thateach room with a playback device can play back corresponding differentmedia content. In addition, rooms can be grouped together forsynchronous playback of the same media content, and/or the same mediacontent can be heard in all rooms synchronously.

BRIEF DESCRIPTION OF THE DRAWINGS

Features, aspects, and advantages of the presently disclosed technologymay be better understood with regard to the following description,appended claims, and accompanying drawings, as listed below. A personskilled in the relevant art will understand that the features shown inthe drawings are for purposes of illustrations, and variations,including different and/or additional features and arrangements thereof,are possible.

FIG. 1A shows a partial cutaway view of an environment having a mediaplayback system configured in accordance with aspects of the disclosedtechnology.

FIG. 1B shows a schematic diagram of the media playback system of FIG.1A and one or more networks.

FIG. 1C shows a block diagram of a playback device.

FIG. 1D shows a block diagram of a playback device.

FIG. 1E shows a block diagram of a network microphone device.

FIG. 1F shows a block diagram of a network microphone device.

FIG. 1G shows a block diagram of a playback device.

FIG. 1H shows a partially schematic diagram of a control device.

FIGS. 1-I through 1L show schematic diagrams of corresponding mediaplayback system zones.

FIG. 1M shows a schematic diagram of media playback system areas.

FIG. 2A shows a front isometric view of a playback device configured inaccordance with aspects of the disclosed technology.

FIG. 2B shows a front isometric view of the playback device of FIG. 3Awithout a grille.

FIG. 2C shows an exploded view of the playback device of FIG. 2A.

FIG. 3A shows a front view of a network microphone device configured inaccordance with aspects of the disclosed technology.

FIG. 3B shows a side isometric view of the network microphone device ofFIG. 3A.

FIG. 3C shows an exploded view of the network microphone device of FIGS.3A and 3B.

FIG. 3D shows an enlarged view of a portion of FIG. 3B.

FIG. 3E shows a block diagram of the network microphone device of FIGS.3A-3D

FIG. 3F shows a schematic diagram of an example voice input.

FIGS. 4A-4D show schematic diagrams of a control device in variousstages of operation in accordance with aspects of the disclosedtechnology.

FIG. 5 shows front view of a control device.

FIG. 6 shows a message flow diagram of a media playback system.

FIG. 7A shows an example configuration of a media playback systemconfigured for mixed-mode synchronous playback according to someembodiments.

FIG. 7B shows an example configuration of a media playback systemconfigured for mixed-mode synchronous playback according to someembodiments.

FIG. 7C shows an example configuration of a media playback systemconfigured for mixed-mode synchronous playback according to someembodiments.

FIG. 7D shows an example configuration of a media playback systemconfigured for mixed-mode synchronous playback according to someembodiments.

FIG. 7E shows an example configuration of a media playback systemconfigured for mixed-mode synchronous playback according to someembodiments.

FIG. 8 shows an example method performed by a playback device forplaying audio content in a mixed-mode synchronous playback configurationaccording to some embodiments.

The drawings are for the purpose of illustrating example embodiments,but those of ordinary skill in the art will understand that thetechnology disclosed herein is not limited to the arrangements and/orinstrumentality shown in the drawings.

DETAILED DESCRIPTION I. Overview

It is desirable to configure multiple networked media playback devices(sometimes referred to herein as playback devices or zone players) intoa playback group of media playback devices configured to play audiocontent in synchrony with each other (sometimes referred to herein as aplayback group, a synchrony group, a zone group, a bonded group, abonded zone, and/or a stereo pair) even when different media playbackdevices of the group are configured to operate in different networkconfiguration modes and/or communicate with each other via differenttypes of network links. In operation, the network links disclosed anddescribed herein may be implemented as hardwired network links (e.g.,via an Ethernet cable, optical cable, or any other wired connection nowknown or later developed that is suitable for transmitting data viamulticast network addressing schemes) and/or wireless network links(e.g., a WiFi, Bluetooth, or other wireless connection now known orlater developed that is suitable for transmitting data via multicastnetwork addressing schemes).

Some networked media playback devices are configurable to operate in astation mode (or infrastructure mode) where an individual media playbackdevice communicates with one or more other media playback devices via anetwork access point, e.g., a wireless/wired network router, networkswitch, or other network infrastructure component. And some mediaplayback devices are configurable to operate in a peer-to-peer mode (orad-hoc mode, or mesh network mode) where an individual media playbackdevice communicates with one or more other media playback devices via adirect peer-to-peer (or ad-hoc or mesh) network link, wherecommunications are transmitted between two or more media playbackdevices without traversing a network access point. And still furthermedia playback devices are configurable to switch between operating ineither a station/infrastructure mode or a peer-to-peer/ad-hoc/mesh mode,depending on network topologies, available network infrastructure,and/or wireless network capacity.

In operation, some networked media playback systems include multiplenetworked media playback devices, where some of the media playbackdevices in the networked media playback system are configured to operatein the station/infrastructure mode, and where some of the media playbackdevices in the networked media playback system are configured to operatein the peer-to-peer/ad-hoc/mesh mode. When a playback group (e.g., asynchrony group or any of the other groupings disclosed herein forgroupwise playback of media content) is formed from one or more mediaplayback devices operating in the station/infrastructure mode and one ormore media playback devices operating in the peer-to-peer/ad-hoc/meshmode, the playback group is sometimes referred to herein as having amixed-mode configuration.

In some embodiments, one device (which may be a media playback device oranother computing device) in a playback group is designated as a groupcoordinator for the playback group and one or more other playbackdevices in the playback group are designated as group members. In someembodiments, the device designated as the group coordinator (i) obtainsaudio content for playback by the playback group, (ii) distributes theobtained audio content to the group members, and (iii) coordinatesgroupwise playback of the audio content by the media playback devices inthe playback group, including but not limited to coordinating playbackof the audio content in synchrony by the media playback devices in theplayback group.

In some embodiments where the group coordinator is (or at leastcomprises) a media playback device, the group coordinator mayadditionally play the obtained audio content in a groupwise fashion withthe group members. In some embodiments, the group coordinator plays theobtained audio content in synchrony with the other group members in theplayback group. But in other embodiments, the group coordinator mayobtain, distribute, and coordinate groupwise and/or synchronous playbackof the audio content by the group members, but the group coordinator maynot itself play the obtained audio content.

In some embodiments, the group coordinator distributing the obtainedaudio to the group members of the playback group includes the groupcoordinator transmitting packets (or frames, cells, or other suitabledata structures) comprising portions of the obtained audio to amulticast network address for the playback group. In some embodiments,at least some (or perhaps all) of the packets addressed to the multicastnetwork address comprise a multicast network address that comprises orat least resolves to at least one of (i) a multicast Media AccessControl (MAC) address or (ii) a unicast MAC address. For example, insome embodiments, at least some packets addressed to the multicastnetwork address comprise a multicast Internet Protocol (IP) address anda unicast MAC address. And in some embodiments, at least some packetsaddressed to multicast network address comprise a multicast IP addressand a unicast MAC address.

In operation, once an individual media playback device has beenconfigured to operate as a group member in a playback group, thatindividual media playback device receives audio content for playback viathe multicast network address for the playback group. In someembodiments, an individual media playback device may additionallyreceive other data via the multicast network address for the playbackgroup, including one or more of (i) playback timing for the audiocontent, (ii) clock timing information of the group coordinator, and/or(iii) other playback group control messages.

In operation, technical problems can often arise when distributingpackets comprising audio content (and perhaps other data and controlinformation, too) between and among a group coordinator and the groupmembers via a multicast network address for a playback group when theplayback group is operating in a mixed-mode configuration. As mentionedabove, a playback group operates in a mixed-mode configuration when somemember(s) of the playback group (i.e., the group coordinator and/or oneor more group members) are configured to operate in the above-describedstation/infrastructure mode, and other member(s) of the playback group(i.e., the group coordinator and/or one or more group members) areconfigured to operate in the peer-to-peer/ad-hoc/mesh mode. In suchconfigurations, at least some packets addressed to the multicast addressfor the playback group must traverse an access point (e.g., awireless/wired network router, network switch, or other networkinfrastructure component).

In some instances, at least some types of access points drop (i.e., donot forward) multicast-addressed packets that need to be forwarded toone or more group members. For example, in some instances, at least sometypes of access points drop multicast-addressed packets received via afirst interface (e.g., a wired network interface) that need to beforwarded to one or more group members via a second interface (e.g., awireless network interface). In some instances, at least some types ofaccess points drop multicast-addressed regardless of the of theinterface on which they were received and/or the interface which theywould otherwise have been forwarded. Thus, where at least some groupmembers of a playback group are configured to operate in thestation/infrastructure mode, and where the group coordinator distributesthe audio content (and perhaps other control data, too) to the groupmembers via the multicast network address for the playback group, insome instances, the access point drops packets comprising audio content(and perhaps other control data). And as a result, the group members donot receive those dropped multicast-addressed packets and thereforecannot play the audio content contained in those droppedmulticast-addressed packets and/or do not perform desired functions inresponse to commands or other control signaling contained within thosedropped multicast-addressed packets.

In operation, most access points do not drop unicast-addressed packetsin the same way that many access points often drop multicast-addressedpackets. However, sending individual packets to every device in aplayback group via each device's individual unicast address isproblematic in view of the volume of time-sensitive data that must betransmitted for media playback systems comprising multiple mediaplayback devices configured to play back media content together in agroupwise manner and/or in synchrony with each other. For example, for aplayback group with ten media playback devices, a group coordinatorwould need to transmit ten separate packets comprising audio data inrapid succession (i.e., one packet for each media playback device) justto distribute one packet of audio data to every media playback device inthe playback group.

The systems and methods disclosed and described herein overcome theseand other technical problems that can arise when a playback group isoperating in a mixed-mode configuration by, among other features,intelligently substituting multicast-addressed packets forunicast-addressed packets for packets that need to traverse an accesspoint between the packet's source and destination.

For example, rather than a first device (e.g., a group coordinator) in aplayback group transmitting packets comprising audio data (and perhapscontrol data, too) to each other device's unicast address (e.g., eachgroup member's unicast address), the first device determines whether thenext hop of a particular packet is either (i) a second device in theplayback group (e.g., because one of first or second devices isconfigured to operate in a peer-to-peer/ad-hoc/mesh network mode, and/orbecause the first and second devices are configured to communicate witheach other via a direct peer-to-peer/ad-hoc/mesh network link), or (ii)an access point (e.g., because one of the first or second networkdevices are configured to operate in a station/infrastructure networkmode, and/or because the first and second devices are configured tocommunication with each other via an network link that traverses anaccess point).

If the next hop of the packet is an access point, the first device(e.g., the group coordinator) transmits the packet to the unicastnetwork address of the second device (e.g., the unicast network addressof a group member). But if the next hop of the packet is not an accesspoint, then then the first device transmits the packet to the multicastnetwork address of the playback group. In this manner, the first device(e.g., the group coordinator) determines which other devices in theplayback group (e.g., which group members) should be addressed via theirunicast network addresses and which other devices in the playback group(e.g., which other group members) can receive packets via the multicastnetwork address for the playback group.

To facilitate aspects of the disclosed embodiments, some embodimentsinclude (i) a first device (e.g., the group coordinator) receiving arequest to join the playback group from a second device (e.g., aprospective group member), where the request to join the playback groupincludes a unicast network address of the second device (e.g., theprospective group member), and (ii) in response to receiving the requestto join the playback group from the second device (e.g., the prospectivegroup member), the first device (e.g., the group coordinator) adds thesecond device to the playback group as a new group member and stores anindication of the unicast address of the new group member in memory,e.g., in a routing or forwarding table or any other data storagearrangement suitable for effectuating the features and functionsdisclosed and described herein. In some embodiments, the request to jointhe playback group may additionally include an indication of whether theprospective media playback device is configured to (or at leastconfigurable to) operate in the station/infrastructure mode or thepeer-to-peer/ad-hoc/mesh mode.

To use the example above of a playback group with ten group members, ifthe group coordinator determines that packets destined for three of thegroup members must traverse an access point but packets destined for theother seven group members need not traverse an access point, the groupcoordinator can distribute each packet of audio data to the playbackgroup via four packets: (i) one multicast packet addressed to theplayback group's multicast network address and (ii) three separateunicast packets, where each unicast packet of the three unicast packetsis addressed to one of the three group members for which packets musttraverse an access point.

In some embodiments disclosed herein, an individual computing device(which may be a media playback device or another type of networkedcomputing device) in a playback group determines, for each othercomputing device in the playback group, whether the other computingdevice is operating in one of (i) a first networking mode or (ii) asecond networking mode. In some embodiments, the first networking modecomprises the above-described peer-to-peer/ad-hoc/mesh mode, and thesecond networking mode comprises the above-describedstation/infrastructure mode.

After the individual computing device in the playback group hasdetermined the networking mode (i.e., peer-to-peer/ad-hoc/mesh orstation/infrastructure), and when the individual computing device needsto transmit one or more packets to the other computing devices in theplayback group, (i) for each other computing device operating in thefirst networking mode, the individual computing device transmits the oneor more packets to a multicast network address for the playback group,and (ii) for each other computing device operating in the secondnetworking mode, the individual computing device transmits the one ormore packets to a unicast network address of the other computercomputing device.

For example, in some embodiments, a group coordinator for a synchronygroup determines, for each group member in the synchrony group, whetherthe group member is operating in one of the private/ad-hoc mode or thestation/infrastructure mode. And after the group coordinator determines,for each group member, whether the group member is operating in in theprivate/ad-hoc mode or the station/infrastructure mode, and when thegroup coordinator needs to transmit one or more packets (or frames,cells, or other suitable data structure) comprising audio content (andperhaps other control signaling, too) to the group members in thesynchrony group, (i) for each group member operating in theprivate/ad-hoc mode, the group coordinator transmits the one or morepackets to a multicast network address for the synchrony group, and (ii)for each group member operating in the station/infrastructure mode, thegroup coordinator transmits the one or more packets to a unicast networkaddress of the group member.

These and other aspects of the technical solutions disclosed hereinenable a playback device (or other computing device) configured in aplayback group to transmit multicast-addressed packets and/orunicast-addressed packets to other playback devices (or computingdevices) in the playback group based on the networking mode of theindividual playback devices (or computing devices) in the playbackgroup. Compared to alternative arrangements where packets of audiocontent (and perhaps control data, too) are transmitted to the playbackgroup's multicast network address, transmitting multicast-addressedand/or unicast-addressed packets to playback devices in a playback groupbased on the networking mode of each playback device improves theoperation of a playback group by enabling all the playback devices inthe playback group to receive the packets even if some of the playbackdevices in the playback group are operating in thestation/infrastructure mode where an access point may otherwise drop (ornot forward) some (or in some cases, all) of the multicast-addressedpackets. And compared to alternative arrangements where packets of audiocontent (and perhaps control data, too) are transmitted to each groupmember's unicast network address, transmitting multicast-addressedand/or unicast-addressed packets to playback devices in a playback groupbased on the networking mode of each playback device further improvesthe operation of a playback group by reducing the total number ofpackets required to distribute the audio content (and perhaps controldata, too) to all the group members by a factor corresponding to thenumber of playback devices in the playback group that are operating inthe peer-to-peer/ad-hoc/mesh networking mode.

Some embodiments disclosed herein relate to a first playback device (orother computing device) configured to perform the audio content and/orcontrol data distribution features and functions disclosed and describedherein. Some embodiments disclosed herein relate to a first playbackdevice (or other computing device) comprising one or more processors andtangible, non-transitory, computer-readable media comprisinginstructions that, when executed, cause the first playback device (orother computing device) to perform the audio content and/or control datadistribution features and functions disclosed and described herein. Andfurther embodiments disclosed herein relate a method of performing theaudio content and/or control data distribution features and functionsdisclosed and described herein.

While some examples described herein may refer to functions performed bygiven actors such as “users,” “listeners,” and/or other entities, itshould be understood that this is for purposes of explanation only. Theclaims should not be interpreted to require action by any such exampleactor unless explicitly required by the language of the claimsthemselves.

In the Figures, identical reference numbers identify generally similar,and/or identical, elements. To facilitate the discussion of anyparticular element, the most significant digit or digits of a referencenumber refers to the Figure in which that element is first introduced.For example, element 110 a is first introduced and discussed withreference to FIG. 1A. Many of the details, dimensions, angles and otherfeatures shown in the Figures are merely illustrative of particularembodiments of the disclosed technology. Accordingly, other embodimentscan have other details, dimensions, angles and features withoutdeparting from the spirit or scope of the disclosure. In addition, thoseof ordinary skill in the art will appreciate that further embodiments ofthe various disclosed technologies can be practiced without several ofthe details described below.

II. Suitable Operating Environment

FIG. 1A is a partial cutaway view of a media playback system 100distributed in an environment 101 (e.g., a house). The media playbacksystem 100 comprises one or more playback devices 110 (identifiedindividually as playback devices 110 a-n), one or more networkmicrophone devices (“NMDs”), 120 (identified individually as NMDs 120a-c), and one or more control devices 130 (identified individually ascontrol devices 130 a and 130 b).

As used herein the term “playback device” can generally refer to anetwork device configured to receive, process, and output data of amedia playback system. For example, a playback device can be a networkdevice that receives and processes audio content. In some embodiments, aplayback device includes one or more transducers or speakers powered byone or more amplifiers. In other embodiments, however, a playback deviceincludes one of (or neither of) the speaker and the amplifier. Forinstance, a playback device can comprise one or more amplifiersconfigured to drive one or more speakers external to the playback devicevia a corresponding wire or cable.

Moreover, as used herein the term NMD (i.e., a “network microphonedevice”) can generally refer to a network device that is configured foraudio detection. In some embodiments, an NMD is a stand-alone deviceconfigured primarily for audio detection. In other embodiments, an NMDis incorporated into a playback device (or vice versa).

The term “control device” can generally refer to a network deviceconfigured to perform functions relevant to facilitating user access,control, and/or configuration of the media playback system 100.

Each of the playback devices 110 is configured to receive audio signalsor data from one or more media sources (e.g., one or more remoteservers, one or more local devices) and play back the received audiosignals or data as sound. The one or more NMDs 120 are configured toreceive spoken word commands, and the one or more control devices 130are configured to receive user input. In response to the received spokenword commands and/or user input, the media playback system 100 can playback audio via one or more of the playback devices 110. In certainembodiments, the playback devices 110 are configured to commenceplayback of media content in response to a trigger. For instance, one ormore of the playback devices 110 can be configured to play back amorning playlist upon detection of an associated trigger condition(e.g., presence of a user in a kitchen, detection of a coffee machineoperation). In some embodiments, for example, the media playback system100 is configured to play back audio from a first playback device (e.g.,the playback device 100 a) in synchrony with a second playback device(e.g., the playback device 100 b). Interactions between the playbackdevices 110, NMDs 120, and/or control devices 130 of the media playbacksystem 100 configured in accordance with the various embodiments of thedisclosure are described in greater detail below with respect to FIGS.1B-1L.

In the illustrated embodiment of FIG. 1A, the environment 101 comprisesa household having several rooms, spaces, and/or playback zones,including (clockwise from upper left) a master bathroom 101 a, a masterbedroom 101 b, a second bedroom 101 c, a family room or den 101 d, anoffice 101 e, a living room 101 f, a dining room 101 g, a kitchen 101 h,and an outdoor patio 101 i. While certain embodiments and examples aredescribed below in the context of a home environment, the technologiesdescribed herein may be implemented in other types of environments. Insome embodiments, for example, the media playback system 100 can beimplemented in one or more commercial settings (e.g., a restaurant,mall, airport, hotel, a retail or other store), one or more vehicles(e.g., a sports utility vehicle, bus, car, a ship, a boat, an airplane),multiple environments (e.g., a combination of home and vehicleenvironments), and/or another suitable environment where multi-zoneaudio may be desirable.

The media playback system 100 can comprise one or more playback zones,some of which may correspond to the rooms in the environment 101. Themedia playback system 100 can be established with one or more playbackzones, after which additional zones may be added, or removed to form,for example, the configuration shown in FIG. 1A. Each zone may be givena name according to a different room or space such as the office 101 e,master bathroom 101 a, master bedroom 101 b, the second bedroom 101 c,kitchen 101 h, dining room 101 g, living room 101 f, and/or the patio101 i. In some aspects, a single playback zone may include multiplerooms or spaces. In certain aspects, a single room or space may includemultiple playback zones.

In the illustrated embodiment of FIG. 1A, the master bathroom 101 a, thesecond bedroom 101 c, the office 101 e, the living room 101 f, thedining room 101 g, the kitchen 101 h, and the outdoor patio 101 i eachinclude one playback device 110, and the master bedroom 101 b and theden 101 d include a plurality of playback devices 110. In the masterbedroom 101 b, the playback devices 110 l and 110 m may be configured,for example, to play back audio content in synchrony as individual onesof playback devices 110, as a bonded playback zone, as a consolidatedplayback device, and/or any combination thereof. Similarly, in the den101 d, the playback devices 110 h-j can be configured, for instance, toplay back audio content in synchrony as individual ones of playbackdevices 110, as one or more bonded playback devices, and/or as one ormore consolidated playback devices. Additional details regarding bondedand consolidated playback devices are described below with respect to,for example, FIGS. 1B and 1E and 1I-1M.

In some aspects, one or more of the playback zones in the environment101 may each be playing different audio content. For instance, a usermay be grilling on the patio 101 i and listening to hip hop music beingplayed by the playback device 110 c while another user is preparing foodin the kitchen 101 h and listening to classical music played by theplayback device 110 b. In another example, a playback zone may play thesame audio content in synchrony with another playback zone. Forinstance, the user may be in the office 101 e listening to the playbackdevice 110 f playing back the same hip hop music being played back byplayback device 110 c on the patio 101 i. In some aspects, the playbackdevices 110 c and 110 f play back the hip hop music in synchrony suchthat the user perceives that the audio content is being playedseamlessly (or at least substantially seamlessly) while moving betweendifferent playback zones. Additional details regarding audio playbacksynchronization among playback devices and/or zones can be found, forexample, in U.S. Pat. No. 8,234,395 entitled, “System and method forsynchronizing operations among a plurality of independently clockeddigital data processing devices,” which is incorporated herein byreference in its entirety.

a. Suitable Media Playback System

FIG. 1B is a schematic diagram of the media playback system 100 and acloud network 102. For ease of illustration, certain devices of themedia playback system 100 and the cloud network 102 are omitted fromFIG. 1B. One or more communication links 103 (referred to hereinafter as“the links 103”) communicatively couple the media playback system 100and the cloud network 102.

The links 103 can comprise, for example, one or more wired networks, oneor more wireless networks, one or more wide area networks (WAN), one ormore local area networks (LAN), one or more personal area networks(PAN), one or more telecommunication networks (e.g., one or more GlobalSystem for Mobiles (GSM) networks, Code Division Multiple Access (CDMA)networks, Long-Term Evolution (LTE) networks, 5G communication networknetworks, and/or other suitable data transmission protocol networks),etc. The cloud network 102 is configured to deliver media content (e.g.,audio content, video content, photographs, social media content) to themedia playback system 100 in response to a request transmitted from themedia playback system 100 via the links 103. In some embodiments, thecloud network 102 is further configured to receive data (e.g. voiceinput data) from the media playback system 100 and correspondinglytransmit commands and/or media content to the media playback system 100.

The cloud network 102 comprises computing devices 106 (identifiedseparately as a first computing device 106 a, a second computing device106 b, and a third computing device 106 c). The computing devices 106can comprise individual computers or servers, such as, for example, amedia streaming service server storing audio and/or other media content,a voice service server, a social media server, a media playback systemcontrol server, etc. In some embodiments, one or more of the computingdevices 106 comprise modules of a single computer or server. In certainembodiments, one or more of the computing devices 106 comprise one ormore modules, computers, and/or servers. Moreover, while the cloudnetwork 102 is described above in the context of a single cloud network,in some embodiments the cloud network 102 comprises a plurality of cloudnetworks comprising communicatively coupled computing devices.Furthermore, while the cloud network 102 is shown in FIG. 1B as havingthree of the computing devices 106, in some embodiments, the cloudnetwork 102 comprises fewer (or more than) three computing devices 106.

The media playback system 100 is configured to receive media contentfrom the networks 102 via the links 103. The received media content cancomprise, for example, a Uniform Resource Identifier (URI) and/or aUniform Resource Locator (URL). For instance, in some examples, themedia playback system 100 can stream, download, or otherwise obtain datafrom a URI or a URL corresponding to the received media content. Anetwork 104 communicatively couples the links 103 and at least a portionof the devices (e.g., one or more of the playback devices 110, NMDs 120,and/or control devices 130) of the media playback system 100. Thenetwork 104 can include, for example, a wireless network (e.g., a WiFinetwork, a Bluetooth, a Z-Wave network, a ZigBee, and/or other suitablewireless communication protocol network) and/or a wired network (e.g., anetwork comprising Ethernet, Universal Serial Bus (USB), and/or anothersuitable wired communication). As those of ordinary skill in the artwill appreciate, as used herein, “WiFi” can refer to several differentcommunication protocols including, for example, Institute of Electricaland Electronics Engineers (IEEE) 802.11a, 802.11b, 802.11g, 802.11n,802.11ac, 802.11ac, 802.11ad, 802.11af, 802.11ah, 802.11ai, 802.11aj,802.11aq, 802.11ax, 802.11ay, 802.15, etc. transmitted at 2.4 Gigahertz(GHz), 5 GHz, and/or another suitable frequency.

In some embodiments, the network 104 comprises a dedicated communicationnetwork that the media playback system 100 uses to transmit messagesbetween individual devices and/or to transmit media content to and frommedia content sources (e.g., one or more of the computing devices 106).In certain embodiments, the network 104 is configured to be accessibleonly to devices in the media playback system 100, thereby reducinginterference and competition with other household devices. In otherembodiments, however, the network 104 comprises an existing householdcommunication network (e.g., a household WiFi network). In someembodiments, the links 103 and the network 104 comprise one or more ofthe same networks. In some aspects, for example, the links 103 and thenetwork 104 comprise a telecommunication network (e.g., an LTE network,a 5G network). Moreover, in some embodiments, the media playback system100 is implemented without the network 104, and devices comprising themedia playback system 100 can communicate with each other, for example,via one or more direct connections, PANs, telecommunication networks,and/or other suitable communication links.

In some embodiments, audio content sources may be regularly added orremoved from the media playback system 100. In some embodiments, forexample, the media playback system 100 performs an indexing of mediaitems when one or more media content sources are updated, added to,and/or removed from the media playback system 100. The media playbacksystem 100 can scan identifiable media items in some or all foldersand/or directories accessible to the playback devices 110, and generateor update a media content database comprising metadata (e.g., title,artist, album, track length) and other associated information (e.g.,URIs, URLs) for each identifiable media item found. In some embodiments,for example, the media content database is stored on one or more of theplayback devices 110, network microphone devices 120, and/or controldevices 130.

In the illustrated embodiment of FIG. 1B, the playback devices 110 l and110 m comprise a group 107 a. The playback devices 110 l and 110 m canbe positioned in different rooms in a household and be grouped togetherin the group 107 a on a temporary or permanent basis based on user inputreceived at the control device 130 a and/or another control device 130in the media playback system 100. When arranged in the group 107 a, theplayback devices 1101 and 110 m can be configured to play back the sameor similar audio content in synchrony from one or more audio contentsources. In certain embodiments, for example, the group 107 a comprisesa bonded zone in which the playback devices 110 l and 110 m compriseleft audio and right audio channels, respectively, of multi-channelaudio content, thereby producing or enhancing a stereo effect of theaudio content. In some embodiments, the group 107 a includes additionalplayback devices 110. In other embodiments, however, the media playbacksystem 100 omits the group 107 a and/or other grouped arrangements ofthe playback devices 110. Additional details regarding groups and otherarrangements of playback devices are described in further detail belowwith respect to FIGS. 1-I through 1M.

The media playback system 100 includes the NMDs 120 a and 120 d, eachcomprising one or more microphones configured to receive voiceutterances from a user. In the illustrated embodiment of FIG. 1B, theNMD 120 a is a standalone device and the NMD 120 d is integrated intothe playback device 110 n. The NMD 120 a, for example, is configured toreceive voice input 121 from a user 123. In some embodiments, the NMD120 a transmits data associated with the received voice input 121 to avoice assistant service (VAS) configured to (i) process the receivedvoice input data and (ii) transmit a corresponding command to the mediaplayback system 100. In some aspects, for example, the computing device106 c comprises one or more modules and/or servers of a VAS (e.g., a VASoperated by one or more of SONOS®, AMAZON®, GOOGLE® APPLE®, MICROSOFT®).The computing device 106 c can receive the voice input data from the NMD120 a via the network 104 and the links 103. In response to receivingthe voice input data, the computing device 106 c processes the voiceinput data (i.e., “Play Hey Jude by The Beatles”), and determines thatthe processed voice input includes a command to play a song (e.g., “HeyJude”). The computing device 106 c accordingly transmits commands to themedia playback system 100 to play back “Hey Jude” by the Beatles from asuitable media service (e.g., via one or more of the computing devices106) on one or more of the playback devices 110.

b. Suitable Playback Devices

FIG. 1C is a block diagram of the playback device 110 a comprising aninput/output 111. The input/output 111 can include an analog I/O 111 a(e.g., one or more wires, cables, and/or other suitable communicationlinks configured to carry analog signals) and/or a digital I/O 111 b(e.g., one or more wires, cables, or other suitable communication linksconfigured to carry digital signals). In some embodiments, the analogI/O 111 a is an audio line-in input connection comprising, for example,an auto-detecting 3.5 mm audio line-in connection. In some embodiments,the digital I/O 111 b comprises a Sony/Philips Digital Interface Format(S/PDIF) communication interface and/or cable and/or a Toshiba Link(TOSLINK) cable. In some embodiments, the digital I/O 111 b comprises anHigh-Definition Multimedia Interface (HDMI) interface and/or cable. Insome embodiments, the digital I/O 111 b includes one or more wirelesscommunication links comprising, for example, a radio frequency (RF),infrared, WiFi, Bluetooth, or another suitable communication protocol.In certain embodiments, the analog I/O 111 a and the digital I/O 111 bcomprise interfaces (e.g., ports, plugs, jacks) configured to receiveconnectors of cables transmitting analog and digital signals,respectively, without necessarily including cables.

The playback device 110 a, for example, can receive media content (e.g.,audio content comprising music and/or other sounds) from a local audiosource 105 via the input/output 111 (e.g., a cable, a wire, a PAN, aBluetooth connection, an ad hoc wired or wireless communication network,and/or another suitable communication link). The local audio source 105can comprise, for example, a mobile device (e.g., a smartphone, atablet, a laptop computer) or another suitable audio component (e.g., atelevision, a desktop computer, an amplifier, a phonograph, a Blu-rayplayer, a memory storing digital media files). In some aspects, thelocal audio source 105 includes local music libraries on a smartphone, acomputer, a networked-attached storage (NAS), and/or another suitabledevice configured to store media files. In certain embodiments, one ormore of the playback devices 110, NMDs 120, and/or control devices 130comprise the local audio source 105. In other embodiments, however, themedia playback system omits the local audio source 105 altogether. Insome embodiments, the playback device 110 a does not include aninput/output 111 and receives all audio content via the network 104.

The playback device 110 a further comprises electronics 112, a userinterface 113 (e.g., one or more buttons, knobs, dials, touch-sensitivesurfaces, displays, touchscreens), and one or more transducers 114(referred to hereinafter as “the transducers 114”). The electronics 112is configured to receive audio from an audio source (e.g., the localaudio source 105) via the input/output 111, one or more of the computingdevices 106 a-c via the network 104 (FIG. 1B)), amplify the receivedaudio, and output the amplified audio for playback via one or more ofthe transducers 114. In some embodiments, the playback device 110 aoptionally includes one or more microphones 115 (e.g., a singlemicrophone, a plurality of microphones, a microphone array) (hereinafterreferred to as “the microphones 115”). In certain embodiments, forexample, the playback device 110 a having one or more of the optionalmicrophones 115 can operate as an NMD configured to receive voice inputfrom a user and correspondingly perform one or more operations based onthe received voice input.

In the illustrated embodiment of FIG. 1C, the electronics 112 compriseone or more processors 112 a (referred to hereinafter as “the processors112 a”), memory 112 b, software components 112 c, a network interface112 d, one or more audio processing components 112 g (referred tohereinafter as “the audio components 112 g”), one or more audioamplifiers 112 h (referred to hereinafter as “the amplifiers 112 h”),and power 112 i (e.g., one or more power supplies, power cables, powerreceptacles, batteries, induction coils, Power-over Ethernet (POE)interfaces, and/or other suitable sources of electric power). In someembodiments, the electronics 112 optionally include one or more othercomponents 112 j (e.g., one or more sensors, video displays,touchscreens, battery charging bases).

The processors 112 a can comprise clock-driven computing component(s)configured to process data, and the memory 112 b can comprise acomputer-readable medium (e.g., a tangible, non-transitorycomputer-readable medium, data storage loaded with one or more of thesoftware components 112 c) configured to store instructions forperforming various operations and/or functions. The processors 112 a areconfigured to execute the instructions stored on the memory 112 b toperform one or more of the operations. The operations can include, forexample, causing the playback device 110 a to retrieve audio informationfrom an audio source (e.g., one or more of the computing devices 106 a-c(FIG. 1B)), and/or another one of the playback devices 110. In someembodiments, the operations further include causing the playback device110 a to send audio information to another one of the playback devices110 a and/or another device (e.g., one of the NMDs 120). Certainembodiments include operations causing the playback device 110 a to pairwith another of the one or more playback devices 110 to enable amulti-channel audio environment (e.g., a stereo pair, a bonded zone).

The processors 112 a can be further configured to perform operationscausing the playback device 110 a to synchronize playback of audiocontent with another of the one or more playback devices 110. As thoseof ordinary skill in the art will appreciate, during synchronousplayback of audio content on a plurality of playback devices, a listenerwill preferably be unable to perceive time-delay differences betweenplayback of the audio content by the playback device 110 a and the otherone or more other playback devices 110. Additional details regardingaudio playback synchronization among playback devices can be found, forexample, in U.S. Pat. No. 8,234,395, which was incorporated by referenceabove.

In some embodiments, the memory 112 b is further configured to storedata associated with the playback device 110 a, such as one or morezones and/or zone groups of which the playback device 110 a is a member,audio sources accessible to the playback device 110 a, and/or a playbackqueue that the playback device 110 a (and/or another of the one or moreplayback devices) can be associated with. The stored data can compriseone or more state variables that are periodically updated and used todescribe a state of the playback device 110 a. The memory 112 b can alsoinclude data associated with a state of one or more of the other devices(e.g., the playback devices 110, NMDs 120, control devices 130) of themedia playback system 100. In some aspects, for example, the state datais shared during predetermined intervals of time (e.g., every 5 seconds,every 10 seconds, every 60 seconds) among at least a portion of thedevices of the media playback system 100, so that one or more of thedevices have the most recent data associated with the media playbacksystem 100.

The network interface 112 d is configured to facilitate a transmissionof data between the playback device 110 a and one or more other deviceson a data network such as, for example, the links 103 and/or the network104 (FIG. 1B). The network interface 112 d is configured to transmit andreceive data corresponding to media content (e.g., audio content, videocontent, text, photographs) and other signals (e.g., non-transitorysignals) comprising digital packet data including an Internet Protocol(IP)-based source address and/or an IP-based destination address. Thenetwork interface 112 d can parse the digital packet data such that theelectronics 112 properly receives and processes the data destined forthe playback device 110 a.

In the illustrated embodiment of FIG. 1C, the network interface 112 dcomprises one or more wireless interfaces 112 e (referred to hereinafteras “the wireless interface 112 e”). The wireless interface 112 e (e.g.,a suitable interface comprising one or more antennae) can be configuredto wirelessly communicate with one or more other devices (e.g., one ormore of the other playback devices 110, NMDs 120, and/or control devices130) that are communicatively coupled to the network 104 (FIG. 1B) inaccordance with a suitable wireless communication protocol (e.g., WiFi,Bluetooth, LTE). In some embodiments, the network interface 112 doptionally includes a wired interface 112 f (e.g., an interface orreceptacle configured to receive a network cable such as an Ethernet, aUSB-A, USB-C, and/or Thunderbolt cable) configured to communicate over awired connection with other devices in accordance with a suitable wiredcommunication protocol. In certain embodiments, the network interface112 d includes the wired interface 112 f and excludes the wirelessinterface 112 e. In some embodiments, the electronics 112 excludes thenetwork interface 112 d altogether and transmits and receives mediacontent and/or other data via another communication path (e.g., theinput/output 111).

The audio processing components 112 g are configured to process and/orfilter data comprising media content received by the electronics 112(e.g., via the input/output 111 and/or the network interface 112 d) toproduce output audio signals. In some embodiments, the audio processingcomponents 112 g comprise, for example, one or more digital-to-analogconverters (DAC), audio preprocessing components, audio enhancementcomponents, a digital signal processors (DSPs), and/or other suitableaudio processing components, modules, circuits, etc. In certainembodiments, one or more of the audio processing components 112 g cancomprise one or more subcomponents of the processors 112 a. In someembodiments, the electronics 112 omits the audio processing components112 g. In some aspects, for example, the processors 112 a executeinstructions stored on the memory 112 b to perform audio processingoperations to produce the output audio signals.

The amplifiers 112 h are configured to receive and amplify the audiooutput signals produced by the audio processing components 112 g and/orthe processors 112 a. The amplifiers 112 h can comprise electronicdevices and/or components configured to amplify audio signals to levelssufficient for driving one or more of the transducers 114. In someembodiments, for example, the amplifiers 112 h include one or moreswitching or class-D power amplifiers. In other embodiments, however,the amplifiers include one or more other types of power amplifiers(e.g., linear gain power amplifiers, class-A amplifiers, class-Bamplifiers, class-AB amplifiers, class-C amplifiers, class-D amplifiers,class-E amplifiers, class-F amplifiers, class-G and/or class Hamplifiers, and/or another suitable type of power amplifier). In certainembodiments, the amplifiers 112 h comprise a suitable combination of twoor more of the foregoing types of power amplifiers. Moreover, in someembodiments, individual ones of the amplifiers 112 h correspond toindividual ones of the transducers 114. In other embodiments, however,the electronics 112 includes a single one of the amplifiers 112 hconfigured to output amplified audio signals to a plurality of thetransducers 114. In some other embodiments, the electronics 112 omitsthe amplifiers 112 h.

The transducers 114 (e.g., one or more speakers and/or speaker drivers)receive the amplified audio signals from the amplifier 112 h and renderor output the amplified audio signals as sound (e.g., audible soundwaves having a frequency between about 20 Hertz (Hz) and 20 kilohertz(kHz)). In some embodiments, the transducers 114 can comprise a singletransducer. In other embodiments, however, the transducers 114 comprisea plurality of audio transducers. In some embodiments, the transducers114 comprise more than one type of transducer. For example, thetransducers 114 can include one or more low frequency transducers (e.g.,subwoofers, woofers), mid-range frequency transducers (e.g., mid-rangetransducers, mid-woofers), and one or more high frequency transducers(e.g., one or more tweeters). As used herein, “low frequency” cangenerally refer to audible frequencies below about 500 Hz, “mid-rangefrequency” can generally refer to audible frequencies between about 500Hz and about 2 kHz, and “high frequency” can generally refer to audiblefrequencies above 2 kHz. In certain embodiments, however, one or more ofthe transducers 114 comprise transducers that do not adhere to theforegoing frequency ranges. For example, one of the transducers 114 maycomprise a mid-woofer transducer configured to output sound atfrequencies between about 200 Hz and about 5 kHz.

By way of illustration, SONOS, Inc. presently offers (or has offered)for sale certain playback devices including, for example, a “SONOS ONE,”“PLAY:1,” “PLAY:3,” “PLAY:5,” “PLAYBAR,” “PLAYBASE,” “CONNECT:AMP,”“CONNECT,” and “SUB.” Other suitable playback devices may additionallyor alternatively be used to implement the playback devices of exampleembodiments disclosed herein. Additionally, one of ordinary skilled inthe art will appreciate that a playback device is not limited to theexamples described herein or to SONOS product offerings. In someembodiments, for example, one or more playback devices 110 compriseswired or wireless headphones (e.g., over-the-ear headphones, on-earheadphones, in-ear earphones). In other embodiments, one or more of theplayback devices 110 comprise a docking station and/or an interfaceconfigured to interact with a docking station for personal mobile mediaplayback devices. In certain embodiments, a playback device may beintegral to another device or component such as a television, a lightingfixture, or some other device for indoor or outdoor use. In someembodiments, a playback device omits a user interface and/or one or moretransducers. For example, FIG. 1D is a block diagram of a playbackdevice 110 p comprising the input/output 111 and electronics 112 withoutthe user interface 113 or transducers 114.

FIG. 1E is a block diagram of a bonded playback device 110 q comprisingthe playback device 110 a (FIG. 1C) sonically bonded with the playbackdevice 110 i (e.g., a subwoofer) (FIG. 1A). In the illustratedembodiment, the playback devices 110 a and 110 i are separate ones ofthe playback devices 110 housed in separate enclosures. In someembodiments, however, the bonded playback device 110 q comprises asingle enclosure housing both the playback devices 110 a and 110 i. Thebonded playback device 110 q can be configured to process and reproducesound differently than an unbonded playback device (e.g., the playbackdevice 110 a of FIG. 1C) and/or paired or bonded playback devices (e.g.,the playback devices 110 l and 110 m of FIG. 1B). In some embodiments,for example, the playback device 110 a is full-range playback deviceconfigured to render low frequency, mid-range frequency, and highfrequency audio content, and the playback device 110 i is a subwooferconfigured to render low frequency audio content. In some aspects, theplayback device 110 a, when bonded with the first playback device, isconfigured to render only the mid-range and high frequency components ofa particular audio content, while the playback device 110 i renders thelow frequency component of the particular audio content. In someembodiments, the bonded playback device 110 q includes additionalplayback devices and/or another bonded playback device. Additionalplayback device embodiments are described in further detail below withrespect to FIGS. 2A-3D.

c. Suitable Network Microphone Devices (NMDs)

FIG. 1F is a block diagram of the NMD 120 a (FIGS. 1A and 1B). The NMD120 a includes one or more voice processing components 124 (hereinafter“the voice components 124”) and several components described withrespect to the playback device 110 a (FIG. 1C) including the processors112 a, the memory 112 b, and the microphones 115. The NMD 120 aoptionally comprises other components also included in the playbackdevice 110 a (FIG. 1C), such as the user interface 113 and/or thetransducers 114. In some embodiments, the NMD 120 a is configured as amedia playback device (e.g., one or more of the playback devices 110),and further includes, for example, one or more of the audio processingcomponents 112 g (FIG. 1C), the transducers 114, and/or other playbackdevice components. In certain embodiments, the NMD 120 a comprises anInternet of Things (IoT) device such as, for example, a thermostat,alarm panel, fire and/or smoke detector, etc. In some embodiments, theNMD 120 a comprises the microphones 115, the voice processing 124, andonly a portion of the components of the electronics 112 described abovewith respect to FIG. 1B. In some aspects, for example, the NMD 120 aincludes the processor 112 a and the memory 112 b (FIG. 1B), whileomitting one or more other components of the electronics 112. In someembodiments, the NMD 120 a includes additional components (e.g., one ormore sensors, cameras, thermometers, barometers, hygrometers).

In some embodiments, an NMD can be integrated into a playback device.FIG. 1G is a block diagram of a playback device 110 r comprising an NMD120 d. The playback device 110 r can comprise many or all of thecomponents of the playback device 110 a and further include themicrophones 115 and voice processing 124 (FIG. 1F). The playback device110 r optionally includes an integrated control device 130 c. Thecontrol device 130 c can comprise, for example, a user interface (e.g.,the user interface 113 of FIG. 1B) configured to receive user input(e.g., touch input, voice input) without a separate control device. Inother embodiments, however, the playback device 110 r receives commandsfrom another control device (e.g., the control device 130 a of FIG. 1B).Additional NMD embodiments are described in further detail below withrespect to FIGS. 3A-3F.

Referring again to FIG. 1F, the microphones 115 are configured toacquire, capture, and/or receive sound from an environment (e.g., theenvironment 101 of FIG. 1A) and/or a room in which the NMD 120 a ispositioned. The received sound can include, for example, vocalutterances, audio played back by the NMD 120 a and/or another playbackdevice, background voices, ambient sounds, etc. The microphones 115convert the received sound into electrical signals to produce microphonedata. The voice processing 124 receives and analyzes the microphone datato determine whether a voice input is present in the microphone data.The voice input can comprise, for example, an activation word followedby an utterance including a user request. As those of ordinary skill inthe art will appreciate, an activation word is a word or other audio cuethat signifying a user voice input. For instance, in querying theAMAZON® VAS, a user might speak the activation word “Alexa.” Otherexamples include “Ok, Google” for invoking the GOOGLE® VAS and “Hey,Siri” for invoking the APPLE® VAS.

After detecting the activation word, voice processing 124 monitors themicrophone data for an accompanying user request in the voice input. Theuser request may include, for example, a command to control athird-party device, such as a thermostat (e.g., NEST® thermostat), anillumination device (e.g., a PHILIPS HUE® lighting device), or a mediaplayback device (e.g., a Sonos® playback device). For example, a usermight speak the activation word “Alexa” followed by the utterance “setthe thermostat to 68 degrees” to set a temperature in a home (e.g., theenvironment 101 of FIG. 1A). The user might speak the same activationword followed by the utterance “turn on the living room” to turn onillumination devices in a living room area of the home. The user maysimilarly speak an activation word followed by a request to play aparticular song, an album, or a playlist of music on a playback devicein the home. Additional description regarding receiving and processingvoice input data can be found in further detail below with respect toFIGS. 3A-3F.

d. Suitable Control Devices

FIG. 1H is a partially schematic diagram of the control device 130 a(FIGS. 1A and 1B). As used herein, the term “control device” can be usedinterchangeably with “controller” or “control system.” Among otherfeatures, the control device 130 a is configured to receive user inputrelated to the media playback system 100 and, in response, cause one ormore devices in the media playback system 100 to perform an action(s) oroperation(s) corresponding to the user input. In the illustratedembodiment, the control device 130 a comprises a smartphone (e.g., aniPhone™, an Android phone) on which media playback system controllerapplication software is installed. In some embodiments, the controldevice 130 a comprises, for example, a tablet (e.g., an iPad™), acomputer (e.g., a laptop computer, a desktop computer), and/or anothersuitable device (e.g., a television, an automobile audio head unit, anIoT device). In certain embodiments, the control device 130 a comprisesa dedicated controller for the media playback system 100. In otherembodiments, as described above with respect to FIG. 1G, the controldevice 130 a is integrated into another device in the media playbacksystem 100 (e.g., one more of the playback devices 110, NMDs 120, and/orother suitable devices configured to communicate over a network).

The control device 130 a includes electronics 132, a user interface 133,one or more speakers 134, and one or more microphones 135. Theelectronics 132 comprise one or more processors 132 a (referred tohereinafter as “the processors 132 a”), a memory 132 b, softwarecomponents 132 c, and a network interface 132 d. The processor 132 a canbe configured to perform functions relevant to facilitating user access,control, and configuration of the media playback system 100. The memory132 b can comprise data storage that can be loaded with one or more ofthe software components executable by the processor 302 to perform thosefunctions. The software components 132 c can comprise applicationsand/or other executable software configured to facilitate control of themedia playback system 100. The memory 112 b can be configured to store,for example, the software components 132 c, media playback systemcontroller application software, and/or other data associated with themedia playback system 100 and the user.

The network interface 132 d is configured to facilitate networkcommunications between the control device 130 a and one or more otherdevices in the media playback system 100, and/or one or more remotedevices. In some embodiments, the network interface 132 d is configuredto operate according to one or more suitable communication industrystandards (e.g., infrared, radio, wired standards including IEEE 802.3,wireless standards including IEEE 802.11a, 802.11b, 802.11g, 802.11n,802.11ac, 802.15, 4G, LTE). The network interface 132 d can beconfigured, for example, to transmit data to and/or receive data fromthe playback devices 110, the NMDs 120, other ones of the controldevices 130, one of the computing devices 106 of FIG. 1B, devicescomprising one or more other media playback systems, etc. Thetransmitted and/or received data can include, for example, playbackdevice control commands, state variables, playback zone and/or zonegroup configurations. For instance, based on user input received at theuser interface 133, the network interface 132 d can transmit a playbackdevice control command (e.g., volume control, audio playback control,audio content selection) from the control device 304 to one or more ofplayback devices. The network interface 132 d can also transmit and/orreceive configuration changes such as, for example, adding/removing oneor more playback devices to/from a zone, adding/removing one or morezones to/from a zone group, forming a bonded or consolidated player,separating one or more playback devices from a bonded or consolidatedplayer, among others. Additional description of zones and groups can befound below with respect to FIGS. 1-I through 1M.

The user interface 133 is configured to receive user input and canfacilitate ‘control of the media playback system 100. The user interface133 includes media content art 133 a (e.g., album art, lyrics, videos),a playback status indicator 133 b (e.g., an elapsed and/or remainingtime indicator), media content information region 133 c, a playbackcontrol region 133 d, and a zone indicator 133 e. The media contentinformation region 133 c can include a display of relevant information(e.g., title, artist, album, genre, release year) about media contentcurrently playing and/or media content in a queue or playlist. Theplayback control region 133 d can include selectable (e.g., via touchinput and/or via a cursor or another suitable selector) icons to causeone or more playback devices in a selected playback zone or zone groupto perform playback actions such as, for example, play or pause, fastforward, rewind, skip to next, skip to previous, enter/exit shufflemode, enter/exit repeat mode, enter/exit cross fade mode, etc. Theplayback control region 133 d may also include selectable icons tomodify equalization settings, playback volume, and/or other suitableplayback actions. In the illustrated embodiment, the user interface 133comprises a display presented on a touch screen interface of asmartphone (e.g., an iPhone™, an Android phone). In some embodiments,however, user interfaces of varying formats, styles, and interactivesequences may alternatively be implemented on one or more networkdevices to provide comparable control access to a media playback system.

The one or more speakers 134 (e.g., one or more transducers) can beconfigured to output sound to the user of the control device 130 a. Insome embodiments, the one or more speakers comprise individualtransducers configured to correspondingly output low frequencies,mid-range frequencies, and/or high frequencies. In some aspects, forexample, the control device 130 a is configured as a playback device(e.g., one of the playback devices 110). Similarly, in some embodimentsthe control device 130 a is configured as an NMD (e.g., one of the NMDs120), receiving voice commands and other sounds via the one or moremicrophones 135.

The one or more microphones 135 can comprise, for example, one or morecondenser microphones, electret condenser microphones, dynamicmicrophones, and/or other suitable types of microphones or transducers.In some embodiments, two or more of the microphones 135 are arranged tocapture location information of an audio source (e.g., voice, audiblesound) and/or configured to facilitate filtering of background noise.Moreover, in certain embodiments, the control device 130 a is configuredto operate as playback device and an NMD. In other embodiments, however,the control device 130 a omits the one or more speakers 134 and/or theone or more microphones 135. For instance, the control device 130 a maycomprise a device (e.g., a thermostat, an IoT device, a network device)comprising a portion of the electronics 132 and the user interface 133(e.g., a touch screen) without any speakers or microphones. Additionalcontrol device embodiments are described in further detail below withrespect to FIGS. 4A-4D and 5.

e. Suitable Playback Device Configurations

FIGS. 1-1 through 1M show example configurations of playback devices inzones and zone groups. Referring first to FIG. 1M, in one example, asingle playback device may belong to a zone. For example, the playbackdevice 110 g in the second bedroom 101 c (FIG. 1A) may belong to Zone C.In some implementations described below, multiple playback devices maybe “bonded” to form a “bonded pair” which together form a single zone.For example, the playback device 110 l (e.g., a left playback device)can be bonded to the playback device 110 l (e.g., a left playbackdevice) to form Zone A. Bonded playback devices may have differentplayback responsibilities (e.g., channel responsibilities). In anotherimplementation described below, multiple playback devices may be mergedto form a single zone. For example, the playback device 110 h (e.g., afront playback device) may be merged with the playback device 110 i(e.g., a subwoofer), and the playback devices 110 j and 110 k (e.g.,left and right surround speakers, respectively) to form a single Zone D.In another example, the playback devices 110 g and 110 h can be bemerged to form a merged group or a zone group 108 b. The merged playbackdevices 110 g and 110 h may not be specifically assigned differentplayback responsibilities. That is, the merged playback devices 110 hand 110 i may, aside from playing audio content in synchrony, each playaudio content as they would if they were not merged.

Each zone in the media playback system 100 may be provided for controlas a single user interface (UI) entity. For example, Zone A may beprovided as a single entity named Master Bathroom. Zone B may beprovided as a single entity named Master Bedroom. Zone C may be providedas a single entity named Second Bedroom.

Playback devices that are bonded may have different playbackresponsibilities, such as responsibilities for certain audio channels.For example, as shown in FIG. 1-I, the playback devices 110 l and 110 mmay be bonded so as to produce or enhance a stereo effect of audiocontent. In this example, the playback device 110 l may be configured toplay a left channel audio component, while the playback device 110 k maybe configured to play a right channel audio component. In someimplementations, such stereo bonding may be referred to as “pairing.”

Additionally, bonded playback devices may have additional and/ordifferent respective speaker drivers. As shown in FIG. 1J, the playbackdevice 110 h named Front may be bonded with the playback device 110 inamed SUB. The Front device 110 h can be configured to render a range ofmid to high frequencies and the SUB device 110 i can be configuredrender low frequencies. When unbonded, however, the Front device 110 hcan be configured render a full range of frequencies. As anotherexample, FIG. 1K shows the Front and SUB devices 110 h and 110 i furtherbonded with Left and Right playback devices 110 j and 110 k,respectively. In some implementations, the Right and Left devices 110 jand 102 k can be configured to form surround or “satellite” channels ofa home theater system. The bonded playback devices 110 h, 110 i, 110 j,and 110 k may form a single Zone D (FIG. 1M).

Playback devices that are merged may not have assigned playbackresponsibilities, and may each render the full range of audio contentthe respective playback device is capable of. Nevertheless, mergeddevices may be represented as a single UI entity (i.e., a zone, asdiscussed above). For instance, the playback devices 110 a and 110 n themaster bathroom have the single UI entity of Zone A. In one embodiment,the playback devices 110 a and 110 n may each output the full range ofaudio content each respective playback devices 110 a and 110 n arecapable of, in synchrony.

In some embodiments, an NMD is bonded or merged with another device soas to form a zone. For example, the NMD 120 b may be bonded with theplayback device 110 e, which together form Zone F, named Living Room. Inother embodiments, a stand-alone network microphone device may be in azone by itself. In other embodiments, however, a stand-alone networkmicrophone device may not be associated with a zone. Additional detailsregarding associating network microphone devices and playback devices asdesignated or default devices may be found, for example, in previouslyreferenced U.S. patent application Ser. No. 15/438,749.

Zones of individual, bonded, and/or merged devices may be grouped toform a zone group. For example, referring to FIG. 1M, Zone A may begrouped with Zone B to form a zone group 108 a that includes the twozones. Similarly, Zone G may be grouped with Zone H to form the zonegroup 108 b. As another example, Zone A may be grouped with one or moreother Zones C-I. The Zones A-I may be grouped and ungrouped in numerousways. For example, three, four, five, or more (e.g., all) of the ZonesA-I may be grouped. When grouped, the zones of individual and/or bondedplayback devices may play back audio in synchrony with one another, asdescribed in previously referenced U.S. Pat. No. 8,234,395. Playbackdevices may be dynamically grouped and ungrouped to form new ordifferent groups that synchronously play back audio content.

In various implementations, the zones in an environment may be thedefault name of a zone within the group or a combination of the names ofthe zones within a zone group. For example, Zone Group 108 b can have beassigned a name such as “Dining+Kitchen”, as shown in FIG. 1M. In someembodiments, a zone group may be given a unique name selected by a user.

Certain data may be stored in a memory of a playback device (e.g., thememory 112 b of FIG. 1C) as one or more state variables that areperiodically updated and used to describe the state of a playback zone,the playback device(s), and/or a zone group associated therewith. Thememory may also include the data associated with the state of the otherdevices of the media system, and shared from time to time among thedevices so that one or more of the devices have the most recent dataassociated with the system.

In some embodiments, the memory may store instances of various variabletypes associated with the states. Variables instances may be stored withidentifiers (e.g., tags) corresponding to type. For example, certainidentifiers may be a first type “a1” to identify playback device(s) of azone, a second type “b1” to identify playback device(s) that may bebonded in the zone, and a third type “c1” to identify a zone group towhich the zone may belong. As a related example, identifiers associatedwith the second bedroom 101 c may indicate that the playback device isthe only playback device of the Zone C and not in a zone group.Identifiers associated with the Den may indicate that the Den is notgrouped with other zones but includes bonded playback devices 110 h-110k. Identifiers associated with the Dining Room may indicate that theDining Room is part of the Dining+Kitchen zone group 108 b and thatdevices 110 b and 110 d are grouped (FIG. 1L). Identifiers associatedwith the Kitchen may indicate the same or similar information by virtueof the Kitchen being part of the Dining+Kitchen zone group 108 b. Otherexample zone variables and identifiers are described below.

In yet another example, the media playback system 100 may variables oridentifiers representing other associations of zones and zone groups,such as identifiers associated with Areas, as shown in FIG. 1M. An areamay involve a cluster of zone groups and/or zones not within a zonegroup. For instance, FIG. 1M shows an Upper Area 109 a including ZonesA-D, and a Lower Area 109 b including Zones E-I. In one aspect, an Areamay be used to invoke a cluster of zone groups and/or zones that shareone or more zones and/or zone groups of another cluster. In anotheraspect, this differs from a zone group, which does not share a zone withanother zone group. Further examples of techniques for implementingAreas may be found, for example, in U.S. application Ser. No. 15/682,506filed Aug. 21, 2017 and titled “Room Association Based on Name,” andU.S. Pat. No. 8,483,853 filed Sep. 11, 2007, and titled “Controlling andmanipulating groupings in a multi-zone media system.” Each of theseapplications is incorporated herein by reference in its entirety. Insome embodiments, the media playback system 100 may not implement Areas,in which case the system may not store variables associated with Areas.

III. Example Systems and Devices

FIG. 2A is a front isometric view of a playback device 210 configured inaccordance with aspects of the disclosed technology. FIG. 2B is a frontisometric view of the playback device 210 without a grille 216 e. FIG.2C is an exploded view of the playback device 210. Referring to FIGS.2A-2C together, the playback device 210 comprises a housing 216 thatincludes an upper portion 216 a, a right or first side portion 216 b, alower portion 216 c, a left or second side portion 216 d, the grille 216e, and a rear portion 216 f. A plurality of fasteners 216 g (e.g., oneor more screws, rivets, clips) attaches a frame 216 h to the housing216. A cavity 216 j (FIG. 2C) in the housing 216 is configured toreceive the frame 216 h and electronics 212. The frame 216 h isconfigured to carry a plurality of transducers 214 (identifiedindividually in FIG. 2B as transducers 214 a-f). The electronics 212(e.g., the electronics 112 of FIG. 1C) is configured to receive audiocontent from an audio source and send electrical signals correspondingto the audio content to the transducers 214 for playback.

The transducers 214 are configured to receive the electrical signalsfrom the electronics 112, and further configured to convert the receivedelectrical signals into audible sound during playback. For instance, thetransducers 214 a-c (e.g., tweeters) can be configured to output highfrequency sound (e.g., sound waves having a frequency greater than about2 kHz). The transducers 214 d-f (e.g., mid-woofers, woofers, midrangespeakers) can be configured output sound at frequencies lower than thetransducers 214 a-c (e.g., sound waves having a frequency lower thanabout 2 kHz). In some embodiments, the playback device 210 includes anumber of transducers different than those illustrated in FIGS. 2A-2C.For example, as described in further detail below with respect to FIGS.3A-3C, the playback device 210 can include fewer than six transducers(e.g., one, two, three). In other embodiments, however, the playbackdevice 210 includes more than six transducers (e.g., nine, ten).Moreover, in some embodiments, all or a portion of the transducers 214are configured to operate as a phased array to desirably adjust (e.g.,narrow or widen) a radiation pattern of the transducers 214, therebyaltering a user's perception of the sound emitted from the playbackdevice 210.

In the illustrated embodiment of FIGS. 2A-2C, a filter 216 i is axiallyaligned with the transducer 214 b. The filter 216 i can be configured todesirably attenuate a predetermined range of frequencies that thetransducer 214 b outputs to improve sound quality and a perceived soundstage output collectively by the transducers 214. In some embodiments,however, the playback device 210 omits the filter 216 i. In otherembodiments, the playback device 210 includes one or more additionalfilters aligned with the transducers 214 b and/or at least another ofthe transducers 214.

FIGS. 3A and 3B are front and right isometric side views, respectively,of an NMD 320 configured in accordance with embodiments of the disclosedtechnology. FIG. 3C is an exploded view of the NMD 320. FIG. 3D is anenlarged view of a portion of FIG. 3B including a user interface 313 ofthe NMD 320. Referring first to FIGS. 3A-3C, the NMD 320 includes ahousing 316 comprising an upper portion 316 a, a lower portion 316 b andan intermediate portion 316 c (e.g., a grille). A plurality of ports,holes or apertures 316 d in the upper portion 316 a allow sound to passthrough to one or more microphones 315 (FIG. 3C) positioned within thehousing 316. The one or more microphones 316 are configured to receivedsound via the apertures 316 d and produce electrical signals based onthe received sound. In the illustrated embodiment, a frame 316 e (FIG.3C) of the housing 316 surrounds cavities 316 f and 316 g configured tohouse, respectively, a first transducer 314 a (e.g., a tweeter) and asecond transducer 314 b (e.g., a mid-woofer, a midrange speaker, awoofer). In other embodiments, however, the NMD 320 includes a singletransducer, or more than two (e.g., two, five, six) transducers. Incertain embodiments, the NMD 320 omits the transducers 314 a and 314 baltogether.

Electronics 312 (FIG. 3C) includes components configured to drive thetransducers 314 a and 314 b, and further configured to analyze audioinformation corresponding to the electrical signals produced by the oneor more microphones 315. In some embodiments, for example, theelectronics 312 comprises many or all of the components of theelectronics 112 described above with respect to FIG. 1C. In certainembodiments, the electronics 312 includes components described abovewith respect to FIG. 1F such as, for example, the one or more processors112 a, the memory 112 b, the software components 112 c, the networkinterface 112 d, etc. In some embodiments, the electronics 312 includesadditional suitable components (e.g., proximity or other sensors).

Referring to FIG. 3D, the user interface 313 includes a plurality ofcontrol surfaces (e.g., buttons, knobs, capacitive surfaces) including afirst control surface 313 a (e.g., a previous control), a second controlsurface 313 b (e.g., a next control), and a third control surface 313 c(e.g., a play and/or pause control). A fourth control surface 313 d isconfigured to receive touch input corresponding to activation anddeactivation of the one or microphones 315. A first indicator 313 e(e.g., one or more light emitting diodes (LEDs) or another suitableilluminator) can be configured to illuminate only when the one or moremicrophones 315 are activated. A second indicator 313 f (e.g., one ormore LEDs) can be configured to remain solid during normal operation andto blink or otherwise change from solid to indicate a detection of voiceactivity. In some embodiments, the user interface 313 includesadditional or fewer control surfaces and illuminators. In oneembodiment, for example, the user interface 313 includes the firstindicator 313 e, omitting the second indicator 313 f. Moreover, incertain embodiments, the NMD 320 comprises a playback device and acontrol device, and the user interface 313 comprises the user interfaceof the control device.

Referring to FIGS. 3A-3D together, the NMD 320 is configured to receivevoice commands from one or more adjacent users via the one or moremicrophones 315. As described above with respect to FIG. 1B, the one ormore microphones 315 can acquire, capture, or record sound in a vicinity(e.g., a region within 10 m or less of the NMD 320) and transmitelectrical signals corresponding to the recorded sound to theelectronics 312. The electronics 312 can process the electrical signalsand can analyze the resulting audio data to determine a presence of oneor more voice commands (e.g., one or more activation words). In someembodiments, for example, after detection of one or more suitable voicecommands, the NMD 320 is configured to transmit a portion of therecorded audio data to another device and/or a remote server (e.g., oneor more of the computing devices 106 of FIG. 1B) for further analysis.The remote server can analyze the audio data, determine an appropriateaction based on the voice command, and transmit a message to the NMD 320to perform the appropriate action. For instance, a user may speak“Sonos, play Michael Jackson.” The NMD 320 can, via the one or moremicrophones 315, record the user's voice utterance, determine thepresence of a voice command, and transmit the audio data having thevoice command to a remote server (e.g., one or more of the remotecomputing devices 106 of FIG. 1B, one or more servers of a VAS and/oranother suitable service). The remote server can analyze the audio dataand determine an action corresponding to the command. The remote servercan then transmit a command to the NMD 320 to perform the determinedaction (e.g., play back audio content related to Michael Jackson). TheNMD 320 can receive the command and play back the audio content relatedto Michael Jackson from a media content source. As described above withrespect to FIG. 1B, suitable content sources can include a device orstorage communicatively coupled to the NMD 320 via a LAN (e.g., thenetwork 104 of FIG. 1B), a remote server (e.g., one or more of theremote computing devices 106 of FIG. 1B), etc. In certain embodiments,however, the NMD 320 determines and/or performs one or more actionscorresponding to the one or more voice commands without intervention orinvolvement of an external device, computer, or server.

FIG. 3E is a functional block diagram showing additional features of theNMD 320 in accordance with aspects of the disclosure. The NMD 320includes components configured to facilitate voice command captureincluding voice activity detector component(s) 312 k, beam formercomponents 312 l, acoustic echo cancellation (AEC) and/or self-soundsuppression components 312 m, activation word detector components 312 n,and voice/speech conversion components 312 o (e.g., voice-to-text andtext-to-voice). In the illustrated embodiment of FIG. 3E, the foregoingcomponents 312 k-312 o are shown as separate components. In someembodiments, however, one or more of the components 312 k-312 o aresubcomponents of the processors 112 a.

The beamforming and self-sound suppression components 312 l and 312 mare configured to detect an audio signal and determine aspects of voiceinput represented in the detected audio signal, such as the direction,amplitude, frequency spectrum, etc. The voice activity detector activitycomponents 312 k are operably coupled with the beamforming and AECcomponents 312 l and 312 m and are configured to determine a directionand/or directions from which voice activity is likely to have occurredin the detected audio signal. Potential speech directions can beidentified by monitoring metrics which distinguish speech from othersounds. Such metrics can include, for example, energy within the speechband relative to background noise and entropy within the speech band,which is measure of spectral structure. As those of ordinary skill inthe art will appreciate, speech typically has a lower entropy than mostcommon background noise.

The activation word detector components 312 n are configured to monitorand analyze received audio to determine if any activation words (e.g.,wake words) are present in the received audio. The activation worddetector components 312 n may analyze the received audio using anactivation word detection algorithm. If the activation word detector 312n detects an activation word, the NMD 320 may process voice inputcontained in the received audio. Example activation word detectionalgorithms accept audio as input and provide an indication of whether anactivation word is present in the audio. Many first- and third-partyactivation word detection algorithms are known and commerciallyavailable. For instance, operators of a voice service may make theiralgorithm available for use in third-party devices. Alternatively, analgorithm may be trained to detect certain activation words. In someembodiments, the activation word detector 312 n runs multiple activationword detection algorithms on the received audio simultaneously (orsubstantially simultaneously). As noted above, different voice services(e.g. AMAZON's ALEXA®, APPLE's SIRI®, or MICROSOFT's CORTANA®) can eachuse a different activation word for invoking their respective voiceservice. To support multiple services, the activation word detector 312n may run the received audio through the activation word detectionalgorithm for each supported voice service in parallel.

The speech/text conversion components 312 o may facilitate processing byconverting speech in the voice input to text. In some embodiments, theelectronics 312 can include voice recognition software that is trainedto a particular user or a particular set of users associated with ahousehold. Such voice recognition software may implementvoice-processing algorithms that are tuned to specific voice profile(s).Tuning to specific voice profiles may require less computationallyintensive algorithms than traditional voice activity services, whichtypically sample from a broad base of users and diverse requests thatare not targeted to media playback systems.

FIG. 3F is a schematic diagram of an example voice input 328 captured bythe NMD 320 in accordance with aspects of the disclosure. The voiceinput 328 can include a activation word portion 328 a and a voiceutterance portion 328 b. In some embodiments, the activation word 557 acan be a known activation word, such as “Alexa,” which is associatedwith AMAZON's ALEXA®. In other embodiments, however, the voice input 328may not include a activation word. In some embodiments, a networkmicrophone device may output an audible and/or visible response upondetection of the activation word portion 328 a. In addition oralternately, an NMB may output an audible and/or visible response afterprocessing a voice input and/or a series of voice inputs.

The voice utterance portion 328 b may include, for example, one or morespoken commands (identified individually as a first command 328 c and asecond command 328 e) and one or more spoken keywords (identifiedindividually as a first keyword 328 d and a second keyword 328 f). Inone example, the first command 328 c can be a command to play music,such as a specific song, album, playlist, etc. In this example, thekeywords may be one or words identifying one or more zones in which themusic is to be played, such as the Living Room and the Dining Room shownin FIG. 1A. In some examples, the voice utterance portion 328 b caninclude other information, such as detected pauses (e.g., periods ofnon-speech) between words spoken by a user, as shown in FIG. 3F. Thepauses may demarcate the locations of separate commands, keywords, orother information spoke by the user within the voice utterance portion328 b.

In some embodiments, the media playback system 100 is configured totemporarily reduce the volume of audio content that it is playing whiledetecting the activation word portion 557 a. The media playback system100 may restore the volume after processing the voice input 328, asshown in FIG. 3F. Such a process can be referred to as ducking, examplesof which are disclosed in U.S. patent application Ser. No. 15/438,749,incorporated by reference herein in its entirety.

FIGS. 4A-4D are schematic diagrams of a control device 430 (e.g., thecontrol device 130 a of FIG. 1H, a smartphone, a tablet, a dedicatedcontrol device, an IoT device, and/or another suitable device) showingcorresponding user interface displays in various states of operation. Afirst user interface display 431 a (FIG. 4A) includes a display name 433a (i.e., “Rooms”). A selected group region 433 b displays audio contentinformation (e.g., artist name, track name, album art) of audio contentplayed back in the selected group and/or zone. Group regions 433 c and433 d display corresponding group and/or zone name, and audio contentinformation audio content played back or next in a playback queue of therespective group or zone. An audio content region 433 e includesinformation related to audio content in the selected group and/or zone(i.e., the group and/or zone indicated in the selected group region 433b). A lower display region 433 f is configured to receive touch input todisplay one or more other user interface displays. For example, if auser selects “Browse” in the lower display region 433 f, the controldevice 430 can be configured to output a second user interface display431 b (FIG. 4B) comprising a plurality of music services 433 g (e.g.,Spotify, Radio by Tunein, Apple Music, Pandora, Amazon, TV, local music,line-in) through which the user can browse and from which the user canselect media content for play back via one or more playback devices(e.g., one of the playback devices 110 of FIG. 1A). Alternatively, ifthe user selects “My Sonos” in the lower display region 433 f, thecontrol device 430 can be configured to output a third user interfacedisplay 431 c (FIG. 4C). A first media content region 433 h can includegraphical representations (e.g., album art) corresponding to individualalbums, stations, or playlists. A second media content region 433 i caninclude graphical representations (e.g., album art) corresponding toindividual songs, tracks, or other media content. If the user selectionsa graphical representation 433 j (FIG. 4C), the control device 430 canbe configured to begin play back of audio content corresponding to thegraphical representation 433 j and output a fourth user interfacedisplay 431 d fourth user interface display 431 d includes an enlargedversion of the graphical representation 433 j, media content information433 k (e.g., track name, artist, album), transport controls 433 m (e.g.,play, previous, next, pause, volume), and indication 433 n of thecurrently selected group and/or zone name.

FIG. 5 is a schematic diagram of a control device 530 (e.g., a laptopcomputer, a desktop computer). The control device 530 includestransducers 534, a microphone 535, and a camera 536. A user interface531 includes a transport control region 533 a, a playback status region533 b, a playback zone region 533 c, a playback queue region 533 d, anda media content source region 533 e. The transport control regioncomprises one or more controls for controlling media playback including,for example, volume, previous, play/pause, next, repeat, shuffle, trackposition, crossfade, equalization, etc. The audio content source region533 e includes a listing of one or more media content sources from whicha user can select media items for play back and/or adding to a playbackqueue.

The playback zone region 533 b can include representations of playbackzones within the media playback system 100 (FIGS. 1A and 1B). In someembodiments, the graphical representations of playback zones may beselectable to bring up additional selectable icons to manage orconfigure the playback zones in the media playback system, such as acreation of bonded zones, creation of zone groups, separation of zonegroups, renaming of zone groups, etc. In the illustrated embodiment, a“group” icon is provided within each of the graphical representations ofplayback zones. The “group” icon provided within a graphicalrepresentation of a particular zone may be selectable to bring upoptions to select one or more other zones in the media playback systemto be grouped with the particular zone. Once grouped, playback devicesin the zones that have been grouped with the particular zone can beconfigured to play audio content in synchrony with the playbackdevice(s) in the particular zone. Analogously, a “group” icon may beprovided within a graphical representation of a zone group. In theillustrated embodiment, the “group” icon may be selectable to bring upoptions to deselect one or more zones in the zone group to be removedfrom the zone group. In some embodiments, the control device 530includes other interactions and implementations for grouping andungrouping zones via the user interface 531. In certain embodiments, therepresentations of playback zones in the playback zone region 533 b canbe dynamically updated as playback zone or zone group configurations aremodified.

The playback status region 533 c includes graphical representations ofaudio content that is presently being played, previously played, orscheduled to play next in the selected playback zone or zone group. Theselected playback zone or zone group may be visually distinguished onthe user interface, such as within the playback zone region 533 b and/orthe playback queue region 533 d. The graphical representations mayinclude track title, artist name, album name, album year, track length,and other relevant information that may be useful for the user to knowwhen controlling the media playback system 100 via the user interface531.

The playback queue region 533 d includes graphical representations ofaudio content in a playback queue associated with the selected playbackzone or zone group. In some embodiments, each playback zone or zonegroup may be associated with a playback queue containing informationcorresponding to zero or more audio items for playback by the playbackzone or zone group. For instance, each audio item in the playback queuemay comprise a uniform resource identifier (URI), a uniform resourcelocator (URL) or some other identifier that may be used by a playbackdevice in the playback zone or zone group to find and/or retrieve theaudio item from a local audio content source or a networked audiocontent source, possibly for playback by the playback device. In someembodiments, for example, a playlist can be added to a playback queue,in which information corresponding to each audio item in the playlistmay be added to the playback queue. In some embodiments, audio items ina playback queue may be saved as a playlist. In certain embodiments, aplayback queue may be empty, or populated but “not in use” when theplayback zone or zone group is playing continuously streaming audiocontent, such as Internet radio that may continue to play untilotherwise stopped, rather than discrete audio items that have playbackdurations. In some embodiments, a playback queue can include Internetradio and/or other streaming audio content items and be “in use” whenthe playback zone or zone group is playing those items.

When playback zones or zone groups are “grouped” or “ungrouped,”playback queues associated with the affected playback zones or zonegroups may be cleared or re-associated. For example, if a first playbackzone including a first playback queue is grouped with a second playbackzone including a second playback queue, the established zone group mayhave an associated playback queue that is initially empty, that containsaudio items from the first playback queue (such as if the secondplayback zone was added to the first playback zone), that contains audioitems from the second playback queue (such as if the first playback zonewas added to the second playback zone), or a combination of audio itemsfrom both the first and second playback queues. Subsequently, if theestablished zone group is ungrouped, the resulting first playback zonemay be re-associated with the previous first playback queue, or beassociated with a new playback queue that is empty or contains audioitems from the playback queue associated with the established zone groupbefore the established zone group was ungrouped. Similarly, theresulting second playback zone may be re-associated with the previoussecond playback queue, or be associated with a new playback queue thatis empty, or contains audio items from the playback queue associatedwith the established zone group before the established zone group wasungrouped.

FIG. 6 is a message flow diagram illustrating data exchanges betweendevices of the media playback system 100 (FIGS. 1A-1M).

At step 650 a, the media playback system 100 receives an indication ofselected media content (e.g., one or more songs, albums, playlists,podcasts, videos, stations) via the control device 130 a. The selectedmedia content can comprise, for example, media items stored locally onor more devices (e.g., the audio source 105 of FIG. 1C) connected to themedia playback system and/or media items stored on one or more mediaservice servers (one or more of the remote computing devices 106 of FIG.1B). In response to receiving the indication of the selected mediacontent, the control device 130 a transmits a message 651 a to theplayback device 110 a (FIGS. 1A-1C) to add the selected media content toa playback queue on the playback device 110 a.

At step 650 b, the playback device 110 a receives the message 651 a andadds the selected media content to the playback queue for play back.

At step 650 c, the control device 130 a receives input corresponding toa command to play back the selected media content. In response toreceiving the input corresponding to the command to play back theselected media content, the control device 130 a transmits a message 651b to the playback device 110 a causing the playback device 110 a to playback the selected media content. In response to receiving the message651 b, the playback device 110 a transmits a message 651 c to the firstcomputing device 106 a requesting the selected media content. The firstcomputing device 106 a, in response to receiving the message 651 c,transmits a message 651 d comprising data (e.g., audio data, video data,a URL, a URI) corresponding to the requested media content.

At step 650 d, the playback device 110 a receives the message 651 d withthe data corresponding to the requested media content and plays back theassociated media content.

At step 650 e, the playback device 110 a optionally causes one or moreother devices to play back the selected media content. In one example,the playback device 110 a is one of a bonded zone of two or more players(FIG. 1M). The playback device 110 a can receive the selected mediacontent and transmit all or a portion of the media content to otherdevices in the bonded zone. In another example, the playback device 110a is a coordinator of a group and is configured to transmit and receivetiming information from one or more other devices in the group. Theother one or more devices in the group can receive the selected mediacontent from the first computing device 106 a, and begin playback of theselected media content in response to a message from the playback device110 a such that all of the devices in the group play back the selectedmedia content in synchrony.

IV. Overview of Example Embodiments

As mentioned above, is desirable to configure multiple playback devicesinto a playback group configured to play audio content with each otherin a groupwise fashion even when different playback devices of theplayback group are configured to operate in different networkconfiguration modes and/or communicate with each other via differenttypes of network links. In some embodiments, a group of playback devicesplaying audio content with each other in a groupwise fashion comprisesthe group of playback devices playing the audio content in synchronywith each other.

Some playback devices are configurable to operate in a station mode (orinfrastructure mode) where an individual playback device communicateswith one or more other playback devices via a network access point,e.g., a wireless/wired network router, network switch, or other networkinfrastructure component. And some playback devices are configurable tooperate in a peer-to-peer mode (or ad-hoc mode) where an individualplayback device communicates with one or more other playback devices viaa peer-to-peer (or ad-hoc) network link, where communications aretransmitted between two or more playback devices without traversing anetwork access point. And still further playback devices areconfigurable to switch between operating in either astation/infrastructure mode or a peer-to-peer/ad-hoc/mesh mode,depending on network topologies, available network infrastructure,and/or wireless network capacity. As described earlier, when a playbackgroup is formed from one or more playback devices operating in astation/infrastructure mode and one or more playback devices operatingin a peer-to-peer/ad-hoc/mesh mode, the playback group is referred toherein as operating in a mixed-mode configuration.

In some embodiments, a playback group includes a group coordinator andone or more group members. In some embodiments, the group coordinatorand the group members are playback devices. In some embodiments, thegroup coordinator is or comprises a laptop computer, tablet computer,smartphone or other computing device, and the group members are playbackdevices.

In operation, the group coordinator performs functions for initiatingand controlling groupwise playback of audio content by (i) the groupmembers or (ii) the group coordinator and the group members. In someembodiments, the group coordinator functions include (i) obtaining audioinformation from an audio source, (ii) generating playback timing forthe audio information, where the playback devices in the playback group(including the group coordinator in some embodiments) use the audioinformation and the playback timing to play audio content based on theaudio information in a groupwise fashion, including but not limited toplaying the audio content based on the audio information in synchronywith the other playback devices in the playback group, and (iii)transmitting the audio information and the playback timing informationto all the playback devices in the playback group. In some embodiments,the group coordinator functions additionally include distributing clocktiming information to all the playback devices in the playback group,where the playback devices in the playback group (including the groupcoordinator in some embodiments) use the clock timing information, theaudio information, and the playback timing to play audio content basedon the audio information in a groupwise fashion, including but notlimited to playing the audio content based on the audio information insynchrony with the other playback devices in the playback group. In someembodiments, however, clock timing or some other common clock referencemay be generated and provided by a device other than the groupcoordinator. For example, in some embodiments, the clock timinginformation may be provided by another group member or perhaps anotherdevice separate from the playback group.

V. Technical Features

In some embodiments, at least some aspects of the technical solutionsderive from the technical structure and organization of the audioinformation, the playback timing, and clock timing information that theplayback devices use to play audio content from audio sources insynchrony with each other or in some other groupwise fashion, includinghow playback devices generate playback timing based on clock timing andplay audio content based on playback timing and clock timing.

Therefore, to aid in understanding certain aspects of the disclosedtechnical solutions, certain technical details of the audio information,playback timing, and clock timing information, as well as how playbackdevices generate and/or use playback timing and clock timing for playingaudio content are described below. Except where noted, the technicaldetails of the audio information, playback timing, and clock timinginformation described below are the same or at least substantially thesame for the examples shown and described herein with reference to FIGS.7A-E and 8.

a. Audio Content

Audio content may be any type of audio content now known or laterdeveloped. For example, in some embodiments, the audio content includesany one or more of: (i) streaming music or other audio obtained from astreaming media service, such as Spotify, Pandora, or other streamingmedia services; (ii) streaming music or other audio from a local musiclibrary, such as a music library stored on a user's laptop computer,desktop computer, smartphone, tablet, home server, or other computingdevice now known or later developed; (iii) audio content associated withvideo content, such as audio associated with a television program ormovie received from any of a television, set-top box, Digital VideoRecorder, Digital Video Disc player, streaming video service, or anyother source of audio-visual media content now known or later developed;(iv) text-to-speech or other audible content from a voice assistantservice (VAS), such as Amazon Alexa or other VAS services now known orlater developed; (v) audio content from a doorbell or intercom systemsuch as Nest, Ring, or other doorbells or intercom systems now known orlater developed; and/or (vi) audio content from a telephone, videophone, video/teleconferencing system or other application configured toallow users to communicate with each other via audio and/or video.

In some embodiments, a group coordinator (sometimes referred to as a“sourcing” device) obtains any of the aforementioned types of audiocontent from an audio source via an interface on the group coordinator,e.g., one of the group coordinator's network interfaces, a “line-in”analog interface, a digital audio interface, or any other interfacesuitable for receiving audio content in digital or analog format nowknown or later developed.

An audio source is any system, device, or application that generates,provides, or otherwise makes available any of the aforementioned audiocontent to a group coordinator or playback device. For example, in someembodiments, an audio source includes any one or more of a streamingmedia (audio, video) service, digital media server or other computingsystem, VAS service, television, cable set-top-box, streaming mediaplayer (e.g., AppleTV, Roku, gaming console), CD/DVD player, doorbell,intercom, telephone, tablet, or any other source of digital audiocontent.

As mentioned earlier, a playback device that receives or otherwiseobtains audio information from an audio source for playback and/ordistribution to other playback devices in a playback group is sometimesreferred to herein as the group coordinator or “sourcing” device for theplayback group. One function of the group coordinator of a playbackgroup is to process received audio information for playback and/ordistribution to group members of the playback group for groupwiseplayback. In some embodiments, the group coordinator transmits theprocessed audio information to all the other group members in theplayback group. In some embodiments, the group coordinator transmits theaudio information to a multicast network address, and all the groupmember playback devices configured to play the audio content (i.e., thegroup members of the playback group) receive the audio information viathat multicast address. In some embodiments, the group coordinatortransmits the audio content to the group members via the playbackgroup's multicast address and/or individual group members' unicastnetwork addresses, depending on each group member's configurednetworking mode. For example, in some embodiments, (i) for the groupmembers operating in the peer-to-peer/ad-hoc/mesh mode described above,the group coordinator transmits packets comprising the audio content tothe multicast network address for the playback group, and (ii) for eachgroup member operating in the station/infrastructure mode, the groupcoordinator transmits packets comprising the audio information to theunicast network address of the group member.

In some embodiments, the group coordinator receives audio informationfrom an audio source in digital form, e.g., via a stream of packets. Insome embodiments, individual packets in the stream have a sequencenumber or other identifier that specifies an ordering of the packets. Inoperation, the group coordinator uses the sequence number or otheridentifier to detect missing packets and/or to reassemble the packets ofthe stream in the correct order before performing further processing. Insome embodiments, the sequence number or other identifier that specifiesthe ordering of the packets is or at least comprises a timestampindicating a time when the packet was created. The packet creation timecan be used as a sequence number based on an assumption that packets arecreated in the order in which they should be subsequently played out.

For example, in some embodiments, individual packets from an audiosource may include both a timestamp and a sequence number. The timestampis used to place the incoming packets of audio information in thecorrect order, and the sequence number is mainly used to detect packetlosses. In operation, the sequence numbers increase by one for eachReal-time Transport Protocol (RTP) packet transmitted from the audiosource, and timestamps increase by the time “covered” by an RTP packet.In instances where a portion of audio content is split across multipleRTP packets, multiple RTP packets can have the same timestamp.

In some embodiments, the group coordinator does not change the sequencenumber or identifier of a received packet during processing. In someembodiments, the group coordinator reorders at least a first set packetsin a first packet stream received from an audio source (an inboundstream) based on each packet's sequence identifier, extracts audioinformation from the received packets, reassembles a bitstream of audioinformation from the received packets, and then repacketizes thereassembled bitstream into a second set of packets (an outbound stream),where packets in the second set of packets have sequence numbers and/ortimestamps that differ from the sequence numbers and/or timestamps ofthe packets in the first set of packets (or first stream).

In some embodiments, individual packets in the second stream are adifferent length (i.e., shorter or longer) than individual packets inthe first stream. In some embodiments, reassembling a bitstream from theincoming packet stream and then subsequently repacketizing thereassembled bitstream into a different set of packets facilitatesuniform processing and/or transmission of audio content by the groupcoordinator and uniform processing by the group members that receive theaudio information from the group coordinator. However, for somedelay-sensitive audio information, reassembly and repacketization may beundesirable, and therefore, in some embodiments, the group coordinatormay not perform reassembly and repacketization for some (or all) audioinformation that it receives before playing the audio information and/ortransmitting the audio information to other playback devices/groupmembers.

In some embodiments an audio source provides audio information indigital form to a group coordinator, e.g., via a digital line-ininterface. In such embodiments, the group coordinator packetizes thedigital audio into packets of audio information before transmitting theaudio information to other playback devices. In some embodiments,individual packets comprise a sequence number or other identifier sothat, when other playback devices receive the audio information, thoseother playback devices will be able to reliably arrange the receivedpackets in the correct order before performing further packetprocessing.

b. Playback Timing

In some embodiments, the playback devices disclosed and described hereinuse playback timing to play audio content in synchrony with each other.An individual playback device can generate playback timing and/orplayback audio content according to playback timing, based on theplayback device's configuration in the playback group. The sourcingplayback device (acting as a group coordinator) that generates theplayback timing for audio content also transmits that generated playbacktiming to all the playback devices that are configured to play the audiocontent (the group members).

In some embodiments, the group coordinator transmits playback timingseparately from the audio information. In some embodiments, the groupcoordinator transmits the playback timing to all the group members bytransmitting the playback timing to a multicast network address for theplayback group, and all the group members receive the playback timingvia the playback group's multicast address. In some embodiments, thegroup coordinator transmits the playback timing to each group member bytransmitting the playback timing to each group member's unicast networkaddress. In some embodiments, (i) for the group members operating in thepeer-to-peer/ad-hoc/mesh mode described above, the group coordinatortransmits packets comprising the playback timing to the multicastnetwork address for the playback group, and (ii) for each group memberoperating in the station/infrastructure mode, the group coordinatortransmits packets comprising the playback timing to the unicast networkaddress of the group member.

In some embodiments, the playback timing is generated for individualframes (or packets) of audio information. As described above, in someembodiments, the audio information is packaged in a series of frames (orpackets) where individual frames (or packets) comprise a portion of theaudio information. In some embodiments, the playback timing for theaudio information includes a playback time for each frame (or packet) ofaudio information. In some embodiments, the playback timing for anindividual frame (or packet) is included within the frame (or packet),e.g., in the header of the frame (or packet), in an extended header ofthe frame (or packet), and/or in the payload portion of the frame (orpacket). Accordingly, in some embodiments, (i) for the group membersoperating in the peer-to-peer/ad-hoc/mesh mode, the group coordinatortransmits packets comprising audio information and playback timing tothe multicast network address for the playback group, and (ii) for eachgroup member operating in the station/infrastructure mode, the groupcoordinator transmits packets comprising the audio information and theplayback timing to the unicast network address of the group member.

In some embodiments, the playback time for an individual frame (orpacket) is identified within a timestamp or other indication. In suchembodiments, the timestamp (or other indication) represents a time toplay the one or more portions of audio information within thatindividual frame (or packet).

In operation, when the playback timing for an individual frame (orpacket) is generated, the playback timing for that individual frame (orpacket) is a future time relative to a current clock time of a referenceclock at the time that the playback timing for that individual frame (orpacket) is generated. As described in more detail below, the referenceclock can be a “local” clock at the group coordinator or a “remote”clock at a separate network device, e.g., another playback device, acomputing device, or another network device configured to provide clocktiming for use by playback devices to generate playback timing and/orplayback audio content.

In operation, a playback device tasked with playing particular audiocontent will play the portion(s) of the particular audio content withinan individual frame (or packet) at the playback time specified by theplayback timing for that individual frame (or packet), as adjusted toaccommodate for differences between the clock timing information and aclock at the playback device that is tasked with playing the audiocontent, as describe in more detail below.

c. Clock Timing

The playback devices disclosed and described herein use clock timing togenerate playback timing for audio information and to play the audiocontent based on the audio information and the generated playbacktiming.

In some embodiments, the group coordinator uses clock timing from areference clock (e.g., a device clock, a digital-to-audio converterclock, a playback time reference clock, or any other clock) to generateplayback timing for audio information that the group coordinatorreceives from an audio source. The reference clock can be a “local”clock at the group coordinator or a “remote” clock at a separate networkdevice, e.g., another playback device, a computing device, or anothernetwork device configured to provide clock timing for use by (i) a groupcoordinator to generate playback timing and/or (ii) the groupcoordinator and group members to play back audio content.

In some embodiments, all of the playback devices tasked with playingparticular audio content in synchrony (i.e., all the group members in aplayback group) use the same clock timing from the same reference clockto play back that particular audio content in synchrony with each other.In some embodiments, playback devices use the same clock timing to playaudio content that was used to generate the playback timing for theaudio content. The reference clock may be a local clock of the groupcoordinator, but the reference clock could also be a clock at adifferent device, including a different playback device.

In operation, the device that generates the clock timing also transmitsthe clock timing to all the playback devices in the network that need touse the clock timing for generating playback timing and/or playing backaudio content. In some embodiments, the device that generates the clocktiming (e.g., the group coordinator in some embodiments) transmits theclock timing to a multicast network address, and all the playbackdevices configured to generate playback timing and/or play audio content(e.g., the group coordinator and/or the group members) receive the clocktiming via that multicast address. In some embodiments, the device thatgenerates the clock timing alternatively transmits the clock timing toeach unicast network address of each playback device in the playbackgroup.

In some embodiments, the device that generates the clock timing is aplayback device configured to operate as the group coordinator for theplayback group. And in operation, the group coordinator of the playbackgroup transmits the clock timing to all the group members of theplayback group. The group coordinator and the group members all use theclock timing and the playback timing to play audio content in agroupwise manner. In some embodiments, the group coordinator and thegroup members all use the clock timing and the playback timing to playaudio content in synchrony with each other.

In some embodiments, (i) for the group members operating in thepeer-to-peer/ad-hoc/mesh mode, the group coordinator transmits packetscomprising clock timing to the multicast network address for theplayback group, and (ii) for each group member operating in thestation/infrastructure mode, the group coordinator transmits packetscomprising the clock timing to the unicast network address of the groupmember

d. Generating Playback Timing by the Group Coordinator

In some embodiments, the group coordinator: (i) generates playbacktiming for audio information based on clock timing from a local clock atthe group coordinator, and (ii) transmits the generated playback timingto all the other group members in the playback group. In operation, whengenerating playback timing for an individual frame (or packet), thegroup coordinator adds a “timing advance” to the current clock time of alocal clock at the group coordinator that the group coordinator is usingfor generating the playback timing.

In some embodiments, the “timing advance” is based on an amount of timethat is greater than or equal to the sum of (i) the network transit timerequired for frames and/or packets comprising audio informationtransmitted from the group coordinator to arrive at all the other groupmembers and (ii) the amount of time required for all the other groupmembers to process received frames/packets from the group coordinatorfor playback.

In some embodiments, the group coordinator determines a timing advanceby sending one or more test packets to one or more (or perhaps all) ofthe other group members, and then receiving test response packets backfrom those one or more group members. In some embodiments, the groupcoordinator and the one or more group members negotiate a timing advancevia multiple test and response messages. In some embodiments with morethan two group members, the group coordinator determines a timingadvance by exchanging test and response messages with all of the groupmembers, and then setting a timing advance that is sufficient for thegroup member having the longest total of network transmit time andpacket processing time.

In some embodiments, the timing advance is less than about 50milliseconds. In some embodiments, the timing advance is less than about20-30 milliseconds. And in still further embodiments, the timing advanceis less than about 10 milliseconds. In some embodiments, the timingadvance remains constant after being determined, or at least constantfor the duration of a synchronous playback session. In otherembodiments, the group coordinator can change the timing advance inresponse to a request from a group member indicating that a greatertiming advance is required (e.g., because the group member is notreceiving packets comprising portions of audio content until after oneor more other group members have already played the portions of audiocontent) or a shorter timing advance would be sufficient (e.g., becausethe group member is buffering more packets comprising portions of audiocontent than necessary to provide consistent, reliable playback).

As described in more detail below, all the playback devices in aplayback group configured to play the audio content in synchrony willuse the playback timing and the clock timing to play the audio contentin synchrony with each other.

e. Generating Playback Timing with Clock Timing from a Remote Clock

In some embodiments, the group coordinator may generate playback timingfor audio information based on clock timing from a remote clock atanother network device, e.g., another playback device, another computingdevice (e.g., a smartphone, laptop, media server, or other computingdevice configurable to provide clock timing sufficient for use by thegroup coordinator generate playback timing and/or playback audiocontent). Generating playback timing based on clock timing from a remoteclock at another network device is more complicated than generatingplayback timing based on clock timing from a local clock in embodimentswhere the same clock timing is used for both (i) generating playbacktiming and (ii) playing audio content based on the playback timing.

In embodiments where the group coordinator generates playback timing foraudio information based on clock timing from a remote cock, the playbacktiming for an individual frame (or packet) is based on (i) a “timingoffset” between (a) a local clock at the group coordinator that thegroup coordinator uses for generating the playback timing and (b) theclock timing information from the remote reference clock, and (ii) a“timing advance” based on an amount of time that is greater than orequal to the sum of (a) the network transit time required for packetstransmitted from the group coordinator to arrive at the group membersand (b) the amount of time required for all of those group members toprocess frames and/or packets comprising audio information received fromthe group coordinator for playback.

For an individual frame (or packet) containing a portion(s) of the audioinformation, the group coordinator generates playback timing for thatindividual frame (or packet) by adding the sum of the “timing offset”and the “timing advance” to a current time of the local clock at thegroup coordinator that the group coordinator uses to generate theplayback timing for the audio information. In operation, the “timingoffset” may be a positive or a negative offset, depending on whether thelocal clock at the group coordinator is ahead of or behind the remoteclock providing the clock timing. The “timing advance” is a positivenumber because it represents a future time relative to the local clocktime, as adjusted by the “timing offset.”

By adding the sum of the “timing advance” and the “timing offset” to acurrent time of the local clock at the group coordinator that the groupcoordinator is using to generate the playback timing for the audioinformation, the group coordinator is, in effect, generating theplayback timing relative to the remote clock.

In some embodiments, and as described above, the “timing advance” isbased on an amount of time that is greater than or equal to the sum of(i) the network transit time required for frames and/or packetscomprising audio information transmitted from the group coordinator toarrive at all other group members and (ii) the amount of time requiredfor all the other group members to process received frames/packets fromthe sourcing playback device for playback.

In some embodiments, the group coordinator determines a timing advancevia signaling between the group coordinator and one or more groupmembers, as described previously. Further, in some embodiments, thetiming advance is less than about 50 milliseconds, less than about 20-30milliseconds, or less than about 10 milliseconds, depending on the audiocontent playback latency requirements because different audio contentmay have different latency requirements. For example, audio contenthaving associated video content may have lower latency requirements thanaudio content that does not have associated video content because audiocontent associating with video content must be synchronized with itscorresponding video content whereas audio content that is not associatedwith video content need not be synchronized with any corresponding videocontent. In some embodiments, the timing advance remains constant afterbeing determined, or at least constant for the duration of a playbacksession. And in some embodiments, the group coordinator can change thetiming advance based on further signaling between the group coordinator(generating the playback timing) and one or more group members (that areusing the playback timing to play audio content).

As described in more detail below, all the playback devices configuredto play the audio content in synchrony will use the playback timing andthe clock timing to play the audio content in synchrony with each other.

f. Playing Audio Content Using Local Playback Timing and Local ClockTiming

In some embodiments, the group coordinator is configured to play audiocontent in synchrony with one or more group members. And if the groupcoordinator is using clock timing from a local clock at the groupcoordinator to generate the playback timing, then the group coordinatorwill play the audio content using locally-generated playback timing andthe locally-generated clock timing. In operation, the group coordinatorplays an individual frame (or packet) comprising portions of the audioinformation when the local clock that the group coordinator used togenerate the playback timing reaches the time specified in the playbacktiming for that individual frame (or packet).

For example, recall that when generating playback timing for anindividual frame (or packet), the group coordinator device adds a“timing advance” to the current clock time of the reference clock usedfor generating the playback timing. In this instance, the referenceclock used for generating the playback timing is a local clock at thegroup coordinator. So, if the timing advance for an individual frame is,for example, 30 milliseconds, then the group coordinator plays theportion (e.g., a sample or set of samples) of audio information in anindividual frame (or packet) 30 milliseconds after creating the playbacktiming for that individual frame (or packet).

In this manner, the group coordinator plays audio content based on theaudio information by using locally-generated playback timing and clocktiming from a local reference clock at the group coordinator. Asdescribed further below, by playing the portion(s) of the audioinformation of an individual frame and/or packet when the clock time ofthe local reference clock reaches the playback timing for thatindividual frame or packet, the group coordinator plays that portion(s)of the audio content corresponding to the audio information in thatindividual frame and/or packet in synchrony with other group members inthe playback group.

g. Playing Audio Content Using Local Playback Timing and Remote ClockTiming

As mentioned earlier, in some embodiments, a group coordinator generatesplayback timing for audio information based on clock timing from aremote clock, i.e., a clock at another network device separate from thegroup coordinator, e.g., another playback device, or another computingdevice (e.g., a smartphone, laptop, media server, or other computingdevice configurable to provide clock timing sufficient for use by aplayback device generate playback timing and/or playback audio content).Because the group coordinator used clock timing from the remote clock togenerate the playback timing for the audio content, the groupcoordinator also uses the clock timing from the remote clock to play theaudio content. In this manner, the group coordinator plays audio contentusing the locally-generated playback timing and the clock timing fromthe remote clock.

Recall that, in embodiments where the group coordinator generatesplayback timing for audio content based on clock timing from a remoteclock, the group coordinator generates the playback timing for anindividual frame (or packet) based on (i) a “timing offset” based on adifference between (a) a local clock at the group coordinator and (b)the clock timing information from the remote clock, and (ii) a “timingadvance” comprising an amount of time that is greater than or equal tothe sum of (a) the network transit time required for frames/packetstransmitted from the group coordinator to arrive at all the groupmembers and (b) the amount of time required for all of the group membersto process frames and/or packets comprising audio information receivedfrom the group coordinator for playback. And further recall that thegroup coordinator transmits the generated playback timing to all of thegroup members in the playback group tasked with playing the audiocontent in synchrony.

In this scenario, to play an individual frame (or packet) of audiocontent in synchrony with the one or more other group member playbackdevices, the group coordinator subtracts the “timing offset” from theplayback timing for that individual frame (or packet) to generate a“local” playback time for playing the audio content based on the audioinformation within that individual frame (or packet). After generatingthe “local” playback time for playing the portion(s) of the audiocontent corresponding to the audio information within the individualframe (or packet), the group coordinator plays the portion(s) of theaudio content corresponding to the audio information in the individualframe (or packet) when the local clock that the group coordinator isusing to play the audio content reaches the “local” playback time forthat individual frame (or packet). By subtracting the “timing offset”from the playback timing to generate the “local” playback time for anindividual frame, the group coordinator effectively plays the portion(s)of audio content corresponding to the audio information in thatframe/packet with reference to the clock timing from the remote clock.

h. Playing Audio Content using Remote Playback Timing and Local ClockTiming

Recall that, in some embodiments, the group coordinator transmits theaudio information and the playback timing for the audio information toone or more group members. If the group member that receives (i.e., thereceiving group member) the audio information and playback timing fromthe group coordinator is the same group member that provided clocktiming information to the group coordinator that the group coordinatorused for generating the playback timing, then the receiving group memberin this instance plays audio content using the audio information andplayback timing received from the group coordinator (i.e., remoteplayback timing) and the group member's own clock timing (i.e., localclock timing). Because the group coordinator used clock timing from aclock at the receiving group member to generate the playback timing, thereceiving group member also uses the clock timing from its local clockto play the audio content. In this manner, the receiving group memberplays audio content using the remote playback timing (i.e., from thegroup coordinator) and the clock timing from its local clock (i.e., itslocal clock timing).

To play an individual frame (or packet) of the audio information insynchrony with the group coordinator (and every other playback devicethat receives the playback timing from the group coordinator and clocktiming from the receiving group member), the receiving group member (i)receives the frames (or packets) comprising the portions of the audioinformation from the group coordinator, (ii) receives the playbacktiming for the audio information from the group coordinator (e.g., inthe frame and/or packet headers of the frames and/or packets comprisingthe portions of the audio information or perhaps separately from theframes and/or packets comprising the portions of the audio information),and (iii) plays the portion(s) of the audio information in theindividual frame (or packet) when the local clock that the receivinggroup member used to generate the clock timing reaches the playback timespecified in the playback timing for that individual frame (or packet)received from the group coordinator.

Because the group coordinator uses the “timing offset” (which is thedifference between the clock timing at the receiving group member andthe clock timing at the group coordinator in this scenario) whengenerating the playback timing, and because this “timing offset” alreadyaccounts for differences between timing at the group coordinator and thereceiving group member, the receiving group member in this scenarioplays individual frames (or packets) comprising portions of the audioinformation when the receiving group member's local clock (that was usedto generated the clock timing) reaches the playback time for anindividual frame (or packet) specified in the playback timing for thatindividual frame (or packet).

And because the receiving group member plays frames (or packets)comprising portions of the audio information according to the playbacktiming, and because the group coordinator plays the same frames (orpackets) comprising portions of the audio information according to theplayback timing and the determined “timing offset,” the receiving groupmember and the group coordinator play the same frames (or packets)comprising audio information corresponding to the same portions of audiocontent in synchrony, i.e., at the same time or at substantially thesame time.

i. Playing Audio Content Using Remote Playback Timing and Remote ClockTiming

Recall that, in some embodiments, the sourcing playback device (e.g.,which in many cases may be the group coordinator) transmits the audioinformation and the playback timing for the audio information to one ormore other playback devices in the synchrony group. And further recallthat, in some embodiments, the network device providing the clock timingcan be a different device than the playback device providing the audioinformation and playback timing (i.e., the sourcing playback device,which in many cases may be the group coordinator). Playback devices thatreceive the audio information, the playback timing, and the clock timingfrom one or more other devices are configured to playback the audiocontent using the playback timing from the device that provided theplayback timing (i.e., remote playback timing) and clock timing from aclock at the device that provided the clock timing (i.e., remote clocktiming). In this manner, the receiving group member playback device inthis instance plays audio content based on audio information by usingremote playback timing and remote clock timing.

To play an individual frame (or packet) of the audio information insynchrony with every other playback device tasked with playing audiocontent in the playback group, the receiving playback device (i)receives the frames (or packets) comprising the portions of the audioinformation, (ii) receives the playback timing for the audio information(e.g., in the frame and/or packet headers of the frames and/or packetscomprising the portions of the audio information or perhaps separatelyfrom the frames and/or packets comprising the portions of the audioinformation), (iii) receives the clock timing, and (iv) plays theportion(s) of the audio information in the individual frame (or packet)when the local clock that the receiving playback device uses for audiocontent playback reaches the playback time specified in the playbacktiming for that individual frame (or packet), as adjusted by a “timingoffset.”

In operation, after the receiving playback device receives clock timing,the receiving device determines a “timing offset” for the receivingplayback device. This “timing offset” comprises (or at least correspondsto) a difference between the “reference” clock that was used to generatethe clock timing and a “local” clock at the receiving playback devicethat the receiving playback device uses to play the audio content. Inoperation, each playback device that receives the clock timing fromanother device calculates its own “timing offset” based on thedifference between its local clock and the clock timing, and thus, the“timing offset” that each playback device determines is specific to thatparticular playback device.

In some embodiments, when playing back the audio content, the receivingplayback device generates new playback timing (specific to the receivingplayback device) for individual frames (or packets) of audio informationby adding the previously determined “timing offset” to the playbacktiming for each received frame (or packet) comprising portions of audioinformation. With this approach, the receiving playback device convertsthe playback timing for the received audio information into “local”playback timing for the receiving playback device. Because eachreceiving playback device calculates its own “timing offset,” eachreceiving playback device's determined “local” playback timing for anindividual frame is specific to that particular playback device.

And when the “local” clock that the receiving playback device is usingfor playing back the audio content reaches the “local” playback time foran individual frame (or packet), the receiving playback device plays theaudio information (or portions thereof) associated with that individualframe (or packet). As described above, in some embodiments, the playbacktiming for a particular frame (or packet) is in the header of the frame(or packet). In other embodiments, the playback timing for individualframes (or packets) is transmitted separately from the frames (orpackets) comprising the audio content.

Because the receiving playback device plays frames (or packets)comprising portions of the audio information according to the playbacktiming as adjusted by the “timing offset” relative to the clock timing,and because the device providing the playback timing generated theplayback timing for those frames (or packets) relative to the clocktiming and plays the same frames (or packets) comprising portions of theaudio information according to the playback timing and its determined“timing offset,” the receiving playback device and the device thatprovided the playback timing (e.g., the group coordinator in someembodiments) play the same frames (or packets) comprising the sameportions of the audio information in synchrony with each other, i.e., atthe same time or at substantially the same time.

VI. Example Embodiments

The example embodiments described below illustrate configurations ofpayback groups configured for mixed-mode synchronous playback accordingto some embodiments.

FIGS. 7A-7D show example configurations of a media playback system 700configured for mixed-mode synchronous playback according to someembodiments.

The media playback system 700 in FIGS. 7A-D includes (i) playbackdevices 702, 704, 706, and 708, and (ii) access point 740. In operation,the playback system 700 obtains audio information from an audio source(not shown) for playback in synchrony. The playback devices 702, 704,706, and 708 may be the same as or similar to any of the playbackdevices disclosed and described herein. The access point 740 isconfigured to connect the playback system 700 to the Internet 750 vialink 752. The access point 740 can be any type of wireless and/or wiredrouter, switch, or other network infrastructure device configured toreceive and forward packets (or frames or cells or other suitable datastructure) via one or more wireless and/or wired network interfaces.

In FIG. 7A, playback devices 702, 704, 706, and 708 are configured in amixed-mode playback group. Playback device 702 is configured as thegroup coordinator and playback devices 704, 706, and 708 are configuredas group members. In operation, each playback device 702, 704, 706, and708 has a corresponding unicast network address, and the playback grouphas a multicast address.

In FIG. 7A, playback devices 702, 704, and 706 are configured in apeer-to-peer (or ad-hoc/mesh) networking mode and playback device 708 isconfigured in a station (or infrastructure) networking mode. Inparticular, group coordinator 702 and group member 704 are configured tocommunicate with each other via a logical peer-to-peer network link 780that does not traverse access point 740. Similarly, group coordinator702 and group member 706 are configured to communicate with each othervia a logical peer-to-peer network link 782 that does not traverseaccess point 740. By contrast, group coordinator 702 and group member708 are configured to communicate with each other via logical networklinks 760 and 762 that form a route that traverses access point 740.

In operation, network links 780, 782, 760, and/or 762 may be implementedas hardwired network links (e.g., via an Ethernet cable, optical cable,or any other wired connection now known or later developed that issuitable for transmitting data via multicast network addressing schemes)and/or wireless network links (e.g., a WiFi, Bluetooth, or otherwireless connection now known or later developed that is suitable fortransmitting data via multicast network addressing schemes).

For example, in some embodiments, network link 760 is a wired networklink, and network links 762, 780, and 782 are wireless network links.For another example, in some embodiments, network links 760 and 762 arewired network links, and networks 780 and 782 are wireless networklinks. And in another example, in some embodiments, network link 762 isa wired network link, and network links 760, 780, and 782 are wirelessnetwork links. The systems and methods disclosed and described hereinare equally applicable to and can be implemented via other combinationsof wired and wireless network links.

In some embodiments, group coordinator 702 knows that group members 704and 706 are configured in a peer-to-peer networking mode and groupmember 708 is configured in a station networking mode. Group coordinator702 also knows each group member's unicast network address and themulticast network address for the playback group. The group coordinator702 and the group members 704, 706, and 708 also know the multicastnetwork address for the playback group. In some embodiments, each groupmember also knows one or more of (i) the group coordinator's 702 unicastaddress and/or (ii) one or more of the other group members' unicastnetwork addresses. In some embodiments, each playback device 702, 704,706, and 708 maintains one or more routing or forwarding tables (orother suitable data structures) comprising unicast network addresses ofthe playback devices in the playback group and the multicast networkaddress for the playback group. In some embodiments, the one or morerouting or forwarding tables includes a mesh network routing/forwardingtable.

In some embodiments, the group coordinator 702 determines that groupmembers 704 and 706 are configured in the peer-to-peer networking modeand group member 708 is configured in the station networking mode basedon information that the group coordinator 702 received from eachrespective group member 704, 706, 708 when that group member joined theplayback group. For example, in some embodiments, one or more playbackgroup join messages and/or responses thereto exchanged between the groupcoordinator 702 and group member 704 includes information identifyingthe configured networking mode of the group member 704 (and perhaps thegroup coordinator 702, too). Similarly, one or more playback group joinmessages and/or responses thereto exchanged between the groupcoordinator 702 and group member 706 includes information identifyingthe configured networking mode of the group member 706 (and perhaps thegroup coordinator 702, too). And one or more playback group joinmessages and/or responses thereto exchanged between the groupcoordinator 702 and group member 708 includes information identifyingthe configured networking mode of the group member 708 (and perhaps thegroup coordinator 702, too).

In operation, the group coordinator 702 obtains and distributes audioinformation from an audio information source (not shown) according toany of the audio information distribution methods disclosed herein. Theaudio information may be any of the various types of audio informationfrom any of the various audio sources disclosed herein. In someembodiments, the audio information is in the form of streaming audioinformation from a streaming audio source. In some embodiments, thegroup coordinator 702 additionally generates and distributes playbacktiming for the audio information according to any of the playback timinggeneration and distribution methods disclosed herein. In someembodiments, the group coordinator 702 additionally generates anddistributes clock timing information according to any of the clocktiming generation and distribution methods disclosed herein.

In some embodiments, the group coordinator 702 transmits a stream ofpackets comprising one or more of the audio information, the playbacktiming, and the clock timing to all of the group members 704, 706, and708. For group members 704 and 706 operating in thepeer-to-peer/ad-hoc/mesh mode, the group coordinator 702 transmits thestream of packets to the multicast network address for the playbackgroup, and both group members 704 and 706 receive the stream of packetsvia the playback group's multicast network address from the groupcoordinator 702 without traversing the access point 740. And for groupmember 708 operating in the station/infrastructure mode, the groupcoordinator 702 transmits the stream of packets to group member's 708unicast network address, and group member 708 receives the stream ofpackets via group member's 708 unicast network address from the groupcoordinator 702 via the access point 740.

Alternatively, in some embodiments, the group coordinator (i) transmitsa stream of packets comprising the audio information and the playbacktiming to group members 704 and 706 (operating in the peer-to-peernetworking mode) via the multicast network address for the playbackgroup, (ii) transmits the stream of packets comprising the audioinformation and the playback timing to group member 708 (operating inthe station networking mode) via group member's 708 unicast address, and(iii) transmits packets comprising clock timing to group members 704,706, and 708 via separate transmissions to each group member's unicastnetwork address.

In some embodiments, when the group coordinator 702 transmits the streamof packets to group member 708 via the access point 740, the groupcoordinator 702 converts the packets addressed to the multicast addressof the playback group into unicast packets addressed to group member 708via an address translation. In some embodiments, the address translationincludes converting <ip-src, ip-dest-multicast, eth-src-unicast,eth-dst-unicast> TO <ip-src, ip-dest-unicast, eth-src-unicast,eth-dst-unicast>.

In some embodiments, after receiving at least a portion of audioinformation, playback timing, and clock timing from the groupcoordinator 702, group members 704, 706, and 708 use the playback timingand clock timing to play audio content based on the audio information insynchrony with each other. And in some embodiments, after receiving atleast a portion of audio information, playback timing, and clock timingfrom the group coordinator 702, group members 704, 706, and 708 use theplayback timing and clock timing to play audio content based on theaudio information in synchrony with each other and also with the groupcoordinator 702. In operation, the group coordinator 702 and the groupmembers 704, 706, and 708 play audio content in synchrony with eachother according to any of the synchronous playback methods disclosed anddescribed herein.

FIG. 7B is similar to FIG. 7A in most respects except that networktopology of FIG. 7B is different than the network topology in FIG. 7A,and the group coordinator and group members of the playback group aredifferent.

Similar to FIG. 7A, in FIG. 7B, playback devices 702, 704, 706, and 708are configured in a mixed-mode playback group. But in FIG. 7B, playbackdevice 704 is configured as the group coordinator and playback devices702, 706, and 708 are configured as group members.

In FIG. 7B, playback devices 702, 704, and 706 are configured in apeer-to-peer (or ad-hoc) networking mode and playback device 708 isconfigured in a station (or infrastructure) networking mode. Inparticular, group coordinator 704 and group member 702 are configured tocommunicate with each other via a logical peer-to-peer network link 780that does not traverse access point 740. Similarly, group coordinator704 and group member 706 are configured to communicate with each othervia a logical peer-to-peer network link 782 that does not traverseaccess point 740. By contrast, group coordinator 704 and group member708 are configured to communicate with each other via logical networklinks 760 and 762 that form a route that traverses access point 740.

In some embodiments, group coordinator 704 knows that group members 702and 706 are configured in a peer-to-peer networking mode and groupmember 708 is configured in a station networking mode. Group coordinator704 also knows each group member's unicast network address and themulticast network address for the playback group. The group coordinator704 and the group members 702, 706, and 708 also know the multicastnetwork address for the playback group. In some embodiments, each groupmember also knows one or more of (i) the group coordinator's 704 unicastaddress and/or (ii) one or more of the other group members' unicastnetwork addresses. In some embodiments, each playback device 702, 704,706, and 708 maintains one or more routing or forwarding tables (orother suitable data structures) comprising unicast network addresses ofthe playback devices in the playback group and the multicast networkaddress for the playback group. In some embodiments, the one or morerouting or forwarding tables includes a mesh network routing/forwardingtable.

In some embodiments, the group coordinator 704 determines that groupmembers 702 and 706 are configured in the peer-to-peer networking modeand group member 708 is configured in the station networking mode basedon information that the group coordinator 704 received from eachrespective group member 702, 706, 708 when that group member joined theplayback group. For example, in some embodiments, one or more playbackgroup join messages and/or responses thereto exchanged between the groupcoordinator 704 and group member 702 includes information identifyingthe configured networking mode of the group member 702 (and perhaps thegroup coordinator 704, too). Similarly, one or more playback group joinmessages and/or responses thereto exchanged between the groupcoordinator 704 and group member 706 includes information identifyingthe configured networking mode of the group member 706 (and perhaps thegroup coordinator 704, too). And one or more playback group joinmessages and/or responses thereto exchanged between the groupcoordinator 704 and group member 708 includes information identifyingthe configured networking mode of the group member 708 (and perhaps thegroup coordinator 704, too).

In operation, the group coordinator 704 obtains and distributes audioinformation from an audio information source (not shown) according toany of the audio information distribution methods disclosed herein. Theaudio information may be any of the various types of audio informationfrom any of the various audio sources disclosed herein. In someembodiments, the audio information is in the form of streaming audioinformation from a streaming audio source. In some embodiments, thegroup coordinator 704 additionally generates and distributes playbacktiming for the audio information according to any of the playback timinggeneration and distribution methods disclosed herein. In someembodiments, the group coordinator 704 additionally generates anddistributes clock timing information according to any of the clocktiming generation and distribution methods disclosed herein.

In some embodiments, the group coordinator 704 transmits a stream ofpackets comprising one or more of the audio information, the playbacktiming, and the clock timing to all of the group members 702, 706, and708.

In FIG. 7B, there is no direct network link between the groupcoordinator 704 and the access point 740 that connects group member 708to the rest of the playback group. In practice, such a scenario mayoccur if the group coordinator 704 is out of wireless network range ofthe access point 740. However, there is a direct network link 760between group member 702 and the access point 740. This aspect of thenetwork topology is reflected in group member 702's routing/forwardingtable for the playback group.

In the network configuration shown in FIG. 7B, the group coordinator 704transmits packets comprising one or more of audio information, playbacktiming, and clock timing to group members 702 and 706 (operating in thepeer-to-peer/ad-hoc/mesh mode) via the multicast network address for theplayback group, and both group members 702 and 706 receive the stream ofpackets via the playback group's multicast network address from thegroup coordinator 704 without traversing the access point 740.

When group member 702 receives packets from the group coordinator 704that are addressed to the multicast network address for the playbackgroup, group member 702 forwards those packets according to itsrouting/forwarding table. If group member 708 was configured in thepeer-to-peer networking mode and there was a peer-to-peer network linkbetween group member 702 and group member 708, then group member 702could forward the packets from group coordinator 704 to the multicastnetwork address of the playback group. But because group member 708 isconfigured in station mode, group member 702 cannot forward the packetsreceived from the group coordinator 704 to the multicast network addressof the playback group and be confident that group member 708 wouldreceive them because, as discussed earlier, some access points 140 drop(or do not forward) multicast-addressed packets.

Therefore, rather than forwarding the packets from the group coordinator704 to the playback group's multicast address, the group member 702instead replaces the playback device's multicast address with the groupmember's 708 unicast address and transmits the unicast-addressed packetsto access point 140, which in turn forwards those packets addressed withthe group member's 708 unicast address to the group member 708. In someembodiments, for the multicast-addressed packets that the group member702 forwards to the group member 708 via the access point 740, the groupmember changes the multicast-addressed packets to unicast-addressedpackets by converting <ip-src, ip-dest-multicast, eth-src-unicast,eth-dst-unicast> TO <ip-src, ip-dest-unicast, eth-src-unicast,eth-dst-unicast>.

Alternatively, in some embodiments, (i) the group coordinator 704transmits a stream of packets comprising the audio information and theplayback timing to group members 702 and 706 (operating in thepeer-to-peer networking mode) via the multicast network address for theplayback group, and (ii) group member 702 forwards the stream of packetscomprising the audio information and the playback timing received fromthe group coordinator 704 to the group member 708 (operating in thestation networking mode) via group member's 708 unicast address. And thegroup coordinator 704 transmits packets comprising clock timing to groupmembers 702, 706, and 708 via separate transmissions to each groupmember's unicast network address.

In some embodiments, after receiving at least a portion of audioinformation, playback timing, and clock timing from the groupcoordinator 704, group members 702, 706, and 708 use the playback timingand clock timing to play audio content based on the audio information insynchrony with each other. And in some embodiments, after receiving atleast a portion of audio information, playback timing, and clock timingfrom the group coordinator 704, group members 702, 706, and 708 use theplayback timing and clock timing to play audio content based on theaudio information in synchrony with each other and also with the groupcoordinator 704. In operation, the group coordinator 704 and the groupmembers 702, 706, and 708 play audio content in synchrony with eachother according to any of the synchronous playback methods disclosed anddescribed herein.

FIG. 7C is similar to FIGS. 7A and 7B in most respects except thatnetwork topology of FIG. 7C is different than the network topologies inFIGS. 7A and 7B.

In FIG. 7C, playback devices 702, 704, 706, and 708 are configured in aplayback group where playback device 704 is configured as the groupcoordinator and playback devices 702, 706, and 708 are configured asgroup members. Unlike FIGS. 7A and 7B, the playback group in FIG. 7C isnot a mixed-mode playback group.

In FIG. 7C, playback devices 702, 704, 706, and 708 are all configuredin a peer-to-peer (or ad-hoc) networking mode and are able tocommunicate with each other via peer-to-peer network links that do notneed to traverse the access point 740. In particular, group coordinator704 and group member 702 are configured to communicate with each othervia a logical peer-to-peer network link 780 that does not traverseaccess point 740. Group coordinator 704 and group member 706 areconfigured to communicate with each other via a logical peer-to-peernetwork link 782 that does not traverse access point 740. And groupcoordinator 704 and group member 708 are configured to communicate witheach other via logical peer-to-peer network links 780 and 784 that forma route traversing group member 702.

In some embodiments, group coordinator 704 knows that group members 702,704, and 706 are configured in a peer-to-peer networking mode. Groupcoordinator 704 also knows each group member's unicast network addressand the multicast network address for the playback group. The groupcoordinator 704 and the group members 702, 706, and 708 also know themulticast network address for the playback group. In some embodiments,each group member also knows one or more of (i) the group coordinator's704 unicast address and/or (ii) one or more of the other group members'unicast network addresses. In some embodiments, each playback device702, 704, 706, and 708 maintains one or more routing or forwardingtables (or other suitable data structures) comprising unicast networkaddresses of the playback devices in the playback group and themulticast network address for the playback group. In some embodiments,the one or more routing or forwarding tables includes a mesh networkrouting/forwarding table.

In some embodiments, the group coordinator 704 determines that groupmembers 702, 706, and 708 are configured in the peer-to-peer networkingmode based on information that the group coordinator 704 received fromeach respective group member 702, 706, 708 when that group member joinedthe playback group. For example, in some embodiments, one or moreplayback group join messages and/or responses thereto exchanged betweenthe group coordinator 704 and group member 702 includes informationidentifying the configured networking mode of the group member 702 (andperhaps the group coordinator 704, too). Similarly, one or more playbackgroup join messages and/or responses thereto exchanged between the groupcoordinator 704 and group member 706 includes information identifyingthe configured networking mode of the group member 706 (and perhaps thegroup coordinator 704, too). And one or more playback group joinmessages and/or responses thereto exchanged between the groupcoordinator 704 and group member 708 includes information identifyingthe configured networking mode of the group member 708 (and perhaps thegroup coordinator 704, too).

In operation, the group coordinator 704 obtains and distributes audioinformation from an audio information source (not shown) according toany of the audio information distribution methods disclosed herein. Theaudio information may be any of the various types of audio informationfrom any of the various audio sources disclosed herein. In someembodiments, the audio information is in the form of streaming audioinformation from a streaming audio source. In some embodiments, thegroup coordinator 704 additionally generates and distributes playbacktiming for the audio information according to any of the playback timinggeneration and distribution methods disclosed herein. In someembodiments, the group coordinator 704 additionally generates anddistributes clock timing information according to any of the clocktiming generation and distribution methods disclosed herein.

In some embodiments, the group coordinator 704 transmits a stream ofpackets comprising one or more of the audio information, the playbacktiming, and the clock timing to all of the group members 702, 706, and708.

In FIG. 7C, there is no direct network link between the groupcoordinator 704 and group member 708. In practice, such a scenario mayoccur if the group coordinator 704 is out of wireless network range ofthe group member 708. However, there is a direct network link 784between group member 702 and group member 708. This aspect of thenetwork topology is reflected in group member 702's routing/forwardingtable for the playback group.

In the network configuration shown in FIG. 7C, the group coordinator 704transmits packets comprising one or more of audio information, playbacktiming, and clock timing to group members 702 and 706 via the multicastnetwork address for the playback group, and both group members 702 and706 receive the stream of packets via the playback group's multicastnetwork address from the group coordinator 704 without traversing theaccess point 740.

When group member 702 receives packets from the group coordinator 704that are addressed to the multicast network address for the playbackgroup, group member 702 forwards those packets according to itsrouting/forwarding table. Because group member 708 is configured in thepeer-to-peer networking mode and there is a peer-to-peer network link784 between group member 702 and group member 708, then group member 708can forward the packets from group coordinator 704 to the multicastnetwork address of the playback group. Therefore, in the configurationshown in FIG. 7C, group member 702 forwards packets from the groupcoordinator 704 to the playback group's multicast network address, andgroup member 708 receives the multicast-addressed packets from the groupcoordinator 704 via group member 702.

Alternatively, in some embodiments, (i) the group coordinator 704transmits a stream of packets comprising the audio information and theplayback timing to group members 702 and 706 via the multicast networkaddress for the playback group, and (ii) group member 702 forwards thestream of packets comprising the audio information and the playbacktiming received from the group coordinator 704 to the group member 708via the playback group's multicast network address. And the groupcoordinator 704 transmits packets comprising clock timing to groupmembers 702, 706, and 708 via separate transmissions to each groupmember's unicast network address.

In some embodiments, after receiving at least a portion of audioinformation, playback timing, and clock timing from the groupcoordinator 704, group members 702, 706, and 708 use the playback timingand clock timing to play audio content based on the audio information insynchrony with each other. And in some embodiments, after receiving atleast a portion of audio information, playback timing, and clock timingfrom the group coordinator 704, group members 702, 706, and 708 use theplayback timing and clock timing to play audio content based on theaudio information in synchrony with each other and also with the groupcoordinator 704. In operation, the group coordinator 704 and the groupmembers 702, 706, and 708 play audio content in synchrony with eachother according to any of the synchronous playback methods disclosed anddescribed herein.

FIG. 7D is similar to FIGS. 7A-7C in most respects except that networktopology of FIG. 7D is different than the network topologies in FIGS.7A-7C.

In FIG. 7D, playback devices 702, 704, 706, and 708 are configured in amixed-mode playback group where playback device 708 is configured as thegroup coordinator and playback devices 702, 704, and 706 are configuredas group members.

In FIG. 7D, playback devices 702, 704, and 706 are configured in apeer-to-peer (or ad-hoc) networking mode and playback device 708 isconfigured in a station (or infrastructure) networking mode. Inparticular, group coordinator 708 and group member 702 are configured tocommunicate with each other via logical network links 762 and 760 thatform a route that traverses access point 740. By contrast, group member702 and group member 706 are configured to communicate with each othervia a logical peer-to-peer network link 782 that does not traverseaccess point 740. And group member 702 and group member 704 areconfigured to communicate with each other via a logical peer-to-peernetwork link 780 that does not traverse access point 740.

In operation, the group coordinator 708 and the group members 702, 704,and 706 know each other's unicast network addresses and the multicastnetwork address for the playback group via the join and responsemessages exchanged during playback group setup as described earlier. Insome embodiments, each playback device 702, 704, 706, and 708 maintainsone or more routing or forwarding tables (or other suitable datastructures) comprising unicast network addresses of the playback devicesin the playback group and the multicast network address for the playbackgroup. In some embodiments, the one or more routing or forwarding tablesincludes a mesh network routing/forwarding table.

In operation, the group coordinator 708 obtains and distributes audioinformation from an audio information source (not shown) according toany of the audio information distribution methods disclosed herein. Theaudio information may be any of the various types of audio informationfrom any of the various audio sources disclosed herein. In someembodiments, the audio information is in the form of streaming audioinformation from a streaming audio source. In some embodiments, thegroup coordinator 708 additionally generates and distributes playbacktiming for the audio information according to any of the playback timinggeneration and distribution methods disclosed herein. In someembodiments, the group coordinator 708 additionally generates anddistributes clock timing information according to any of the clocktiming generation and distribution methods disclosed herein.

In some embodiments, the group coordinator 708 transmits a stream ofpackets comprising one or more of the audio information, the playbacktiming, and the clock timing to all of the group members 702, 704, and706.

In FIG. 7D, there is no direct peer-to-peer link between the groupcoordinator 708 and any of the other group members 702, 704, and 706.Instead, all transmissions from the group coordinator 708 to the othergroup members 702, 704, and 706 must traverse the access point 740. Insome embodiments, this aspect of the network topology is reflected inthe group coordinator's 708 routing/forwarding table for the playbackgroup.

In the network configuration shown in FIG. 7D, the group coordinator 708transmits packets comprising one or more of audio information, playbacktiming, and clock timing to group members 702, 704, and 708. But becauseall transmissions from the group coordinator 708 must traverse theaccess point 740, and because some access points drop (or do notforward) multicast-addressed packets, the group coordinator 708 cannottransmit packets comprising one or more the audio information, playbacktiming and clock timing to the playback group's multicast networkaddress with confidence that group members 702, 704, and 706 willreceive the packets.

Therefore, in FIG. 7D, rather transmitting the stream of packetscomprising one or more of the audio information, playback timing, andclock timing to the playback group's multicast network address, thegroup coordinator 708 instead transmits three separate streams ofpackets comprising one or more of the audio information, playbacktiming, and clock timing to each corresponding unicast address of eachof the group members 702, 704, and 708.

In some embodiments, after receiving at least a portion of audioinformation, playback timing, and clock timing from the groupcoordinator 708, group members 702, 704, and 706 use the playback timingand clock timing to play audio content based on the audio information insynchrony with each other. And in some embodiments, after receiving atleast a portion of audio information, playback timing, and clock timingfrom the group coordinator 708, group members 702, 704, and 706 use theplayback timing and clock timing to play audio content based on theaudio information in synchrony with each other and also with the groupcoordinator 708. In operation, the group coordinator 708 and the groupmembers 702, 704, and 706 play audio content in synchrony with eachother according to any of the synchronous playback methods disclosed anddescribed herein.

FIG. 7E is similar to FIGS. 7A-7D in most respects except that networktopology of FIG. 7E is different than the network topologies in FIGS.7A-7D.

In FIG. 7E, playback devices 702, 704, 706, and 708 are configured in amixed-mode playback group where playback device 704 is configured as thegroup coordinator and playback devices 702, 706, and 708 are configuredas group members. Playback device 702 is configured as bridge for theplayback group, so playback device 702 can forward audio information(and timing and control information, too) but playback device 702 notconfigured to play audio information in this configuration.

In FIG. 7E, playback devices 702 and 704 are configured in apeer-to-peer (or ad-hoc) networking mode and playback devices 706 and708 are configured in a station (or infrastructure) networking mode. Inparticular, group coordinator 704 and group member 702 are configured tocommunicate with each other via a logical peer-to-peer network link 780that does not traverse access point 740. By contrast, group coordinator704 and group members 706 and 708 are configured to communicate witheach other via logical links that traverse access point 740.

In operation, the group coordinator 704 and the group members 702, 706,and 708 know each other's unicast network addresses and the multicastnetwork address for the playback group via the join and responsemessages exchanged during playback group setup as described earlier. Insome embodiments, each playback device 702, 704, 706, and 708 maintainsone or more routing or forwarding tables (or other suitable datastructures) comprising unicast network addresses of the playback devicesin the playback group and the multicast network address for the playbackgroup. In some embodiments, the one or more routing or forwarding tablesincludes a mesh network routing/forwarding table.

In operation, the group coordinator 704 obtains and distributes audioinformation from an audio information source (not shown) according toany of the audio information distribution methods disclosed herein. Theaudio information may be any of the various types of audio informationfrom any of the various audio sources disclosed herein. In someembodiments, the audio information is in the form of streaming audioinformation from a streaming audio source. In some embodiments, thegroup coordinator 704 additionally generates and distributes playbacktiming for the audio information according to any of the playback timinggeneration and distribution methods disclosed herein. In someembodiments, the group coordinator 704 additionally generates anddistributes clock timing information according to any of the clocktiming generation and distribution methods disclosed herein.

In some embodiments, the group coordinator 704 transmits a stream ofpackets comprising one or more of the audio information, the playbacktiming, and the clock timing to all of the group members 702, 706, and708.

In FIG. 7E, there is no direct peer-to-peer link between the groupcoordinator 704 and group members 706 and 708. Instead, alltransmissions from the group coordinator 704 to group members 706 and708 must traverse the access point 740. In some embodiments, this aspectof the network topology is reflected in the group coordinator's 704routing/forwarding table for the playback group.

In the network configuration shown in FIG. 7E, the group coordinator 708transmits packets comprising one or more of audio information, playbacktiming, and clock timing to bridge 702 and group members 706 and 708.

In the network configuration shown in FIG. 7E, the group coordinator 704transmits packets comprising one or more of audio information, playbacktiming, and clock timing to bridge 702 via the multicast network addressfor the playback group, and bridge 702 receives the stream of packetsvia the playback group's multicast network address from the groupcoordinator 704 without traversing the access point 740.

When bridge 702 receives packets from the group coordinator 704 that areaddressed to the multicast network address for the playback group,bridge 702 forwards those packets according to its routing/forwardingtable. If group members 706 and 708 were configured in the peer-to-peernetworking mode and there was a peer-to-peer network link between bridge702 and group members 706 and 708, then bridge 702 could forward thepackets from group coordinator 704 to the multicast network address ofthe playback group. But because group members 706 and 708 are configuredin station mode, bridge 702 cannot forward the packets received from thegroup coordinator 704 to the multicast network address of the playbackgroup and be confident that group members 706 and 708 would receive thembecause, as discussed earlier, some access points 140 drop (or do notforward) multicast-addressed packets.

Therefore, rather than forwarding the packets from the group coordinator704 to the playback group's multicast address, bridge 702 insteadtransmits two separate streams to each respective unicast address forgroup members 706 and 708. In some embodiments, for the first unicaststream, bridge 702 replaces the playback group's multicast address withthe group member's 708 unicast address and transmits theunicast-addressed packets to access point 140, which in turn forwardsthose packets addressed with the group member's 708 unicast address tothe group member 708. And for the second unicast stream, bridge 702replaces the playback group's multicast address with the group member's706 unicast address and transmits the unicast-addressed packets toaccess point 140, which in turn forwards those packets addressed withthe group member's 706 unicast address to the group member 706.

In some embodiments, for the multicast-addressed packets that bridge 702forwards to group members 706 and 708 via the access point 740, thebridge 702 changes the multicast-addressed packets to unicast-addressedpackets by (i) converting <ip-src, ip-dest-multicast, eth-src-unicast,eth-dst-unicast> TO <ip-src, ip-dest-unicast, eth-src-unicast,eth-dst-unicast> for the unicast-addressed packets for group member 706and (ii) converting <ip-src, ip-dest-multicast, eth-src-unicast,eth-dst-unicast> TO <ip-src, ip-dest-unicast, eth-src-unicast,eth-dst-unicast> for the unicast-addressed packets for group member 708.

Alternatively, in some embodiments, (i) the group coordinator 704transmits a stream of packets comprising the audio information and theplayback timing to bridge 702 (operating in the peer-to-peer networkingmode) via the multicast network address for the playback group, and (ii)bridge 702 forwards a first unicast streams of packets comprising theaudio information and the playback timing received from the groupcoordinator 704 to the group member 706 (operating in the stationnetworking mode) via group member's 706 unicast address, and forwards asecond unicast streams of packets comprising the audio information andthe playback timing received from the group coordinator 704 to the groupmember 708 (operating in the station networking mode) via group member's708 unicast address. And the group coordinator 704 transmits packetscomprising clock timing to group members 702, 706, and 708 via separatetransmissions to each group member's unicast network address.

In some embodiments, after receiving at least a portion of audioinformation, playback timing, and clock timing from the groupcoordinator 704, group members 706 and 708 use the playback timing andclock timing to play audio content based on the audio information insynchrony with each other. And in some embodiments, after receiving atleast a portion of audio information, playback timing, and clock timingfrom the group coordinator 704, group members 706 and 708 use theplayback timing and clock timing to play audio content based on theaudio information in synchrony with each other and also with the groupcoordinator 704. In operation, the group coordinator 704 and the groupmembers 706 and 708 play audio content in synchrony with each otheraccording to any of the synchronous playback methods disclosed anddescribed herein.

VII. Example Methods

FIG. 8 shows an example method 800 performed by a computing device in amixed-mode synchronous playback configuration according to someembodiments. The computing device may be the same as or similar any ofthe computing devices disclosed herein.

Method 800 begins at step 802, which includes receiving a request tojoin the group from a prospective group member, wherein the request tojoin the group comprises a unicast network address of the prospectivegroup member.

Next, method 800 advances to step 804, which includes, in response toreceiving the request to join the group from the prospective groupmember, adding the prospective group member to the group as a new groupmember and storing an indication of the unicast address of the new groupmember.

Next, method 800 advances to step 806, which includes for each groupmember in the group, determining whether (i) the group member isoperating in the first networking mode or (ii) the group member isoperating in the second networking mode.

In some embodiments, determining whether a group member is operating inthe first networking mode comprises determining that the computingdevice is in communication with the group member via a first type ofnetwork link, and wherein determining whether the group member isoperating in the second networking mode comprises determining that thecomputing device is in communication with the group member via a secondtype of network link.

In some embodiments, determining whether a group member is operating inthe first networking mode comprises determining whether one or morepackets are to be transmitted between the computing device and the groupmember without traversing one or more intermediate network devices, andwherein determining whether the group member is operating in the secondnetworking mode comprises determining whether one or more packets are tobe transmitted between the computing device and the group member via arouter.

And in some embodiments, determining whether a group member is operatingin the first networking mode comprises determining whether the computingdevice is in communication with the group member via an ad-hoc networklink (or mesh network link, or via one or more peer-to-peer networklinks), and wherein determining whether the group member is operating inthe second networking mode comprises determining whether the computingdevice is in communication with the group member via an ad-hoc networklink (or mesh network link, or via one or more peer-to-peer networklinks).

Next, method 800 advances to step 808, which includes, for a stream ofpackets to be transmitted to the group comprising one or more groupmembers, wherein each group member has a unicast network address, (i)for each group member operating in a first networking mode, transmittingthe stream of packets to a multicast network address for the group, and(ii) for each group member operating in a second networking mode,transmitting the stream of packets to the unicast network address of thegroup member.

In some embodiments, the computing device comprises a playback device,each group member in the group comprises a playback device, the streamof packets comprises media content and playback timing for the mediacontent, the playback timing is generated by the computing device, andthe computing device is configured to use the playback timing to playthe media content in synchrony with the group members. In operation, theplayback devices may be the same as or similar to any of the playbackdevices disclosed and/or described herein, including but not limited toany of the playback devices described with reference to FIG. 7.

In some embodiments, each group member in the group comprises a playbackdevice, the stream of packets comprises media content and playbacktiming for the media content, the playback timing is generated by thecomputing device, and the computing device is configured to transmit thestream of packets to the group members in a manner sufficient to enablethe group members to use the playback timing to play the media contentin synchrony with each other.

In some embodiments where the stream of packets comprises media contentand playback timing for the media content, and where the playback timingis generated by the computing device, method 800 additionally includesthe step of generating and transmitting packets comprising clock timinginformation from the computing device to each group member, wherein theclock timing is sufficient for use with the playback timing by the groupmembers to play the media content in synchrony with each other. In someembodiments, generating and transmitting packets comprising clock timinginformation from the computing device to each group member comprisestransmitting the packets comprising the clock timing information to theunicast network address of each group member.

VIII. Conclusion

The above discussions relating to playback devices, controller devices,playback zone configurations, and media/audio content sources provideonly some examples of operating environments within which functions andmethods described below may be implemented. Other operating environmentsand configurations of media playback systems, playback devices, andnetwork devices not explicitly described herein may also be applicableand suitable for implementation of the functions and methods.

The description above discloses, among other things, various examplesystems, methods, apparatus, and articles of manufacture including,among other components, firmware and/or software executed on hardware.It is understood that such examples are merely illustrative and shouldnot be considered as limiting. For example, it is contemplated that anyor all of the firmware, hardware, and/or software aspects or componentscan be embodied exclusively in hardware, exclusively in software,exclusively in firmware, or in any combination of hardware, software,and/or firmware. Accordingly, the examples provided are not the onlyways) to implement such systems, methods, apparatus, and/or articles ofmanufacture.

Additionally, references herein to “embodiment” means that a particularfeature, structure, or characteristic described in connection with theembodiment can be included in at least one example embodiment of aninvention. The appearances of this phrase in various places in thespecification are not necessarily all referring to the same embodiment,nor are separate or alternative embodiments mutually exclusive of otherembodiments. As such, the embodiments described herein, explicitly andimplicitly understood by one skilled in the art, can be combined withother embodiments.

The specification is presented largely in terms of illustrativeenvironments, systems, procedures, steps, logic blocks, processing, andother symbolic representations that directly or indirectly resemble theoperations of data processing devices coupled to networks. These processdescriptions and representations are typically used by those skilled inthe art to most effectively convey the substance of their work to othersskilled in the art. Numerous specific details are set forth to provide athorough understanding of the present disclosure. However, it isunderstood to those skilled in the art that certain embodiments of thepresent disclosure can be practiced without certain, specific details.In other instances, well known methods, procedures, components, andcircuitry have not been described in detail to avoid unnecessarilyobscuring aspects of the embodiments. Accordingly, the scope of thepresent disclosure is defined by the appended claims rather than theforegoing description of embodiments.

When any of the appended claims are read to cover a purely softwareand/or firmware implementation, at least one of the elements in at leastone example is hereby expressly defined to include a tangible,non-transitory medium such as a memory, DVD, CD, Blu-ray, and so on,storing the software and/or firmware.

What is claimed is:
 1. A computing device comprising: one or moreprocessors; one or more network interfaces; and tangible, non-transitorycomputer-readable media comprising instructions stored therein, whereinthe instructions, when executed, cause the computing device to performfunctions comprising: for a stream of packets to be transmitted to agroup comprising one or more group members, wherein each group memberhas a unicast network address, (i) for each group member operating in afirst networking mode, transmitting the stream of packets to a multicastnetwork address for the group, and (ii) for each group member operatingin a second networking mode, transmitting the stream of packets to theunicast network address of the group member.
 2. The computing device ofclaim 1, wherein the functions further comprise: for each group memberin the group, determining whether (i) the group member is operating inthe first networking mode or (ii) the group member is operating in thesecond networking mode.
 3. The computing device of claim 2, whereindetermining whether a group member is operating in the first networkingmode comprises determining that the computing device is in communicationwith the group member via a first type of network link, and whereindetermining whether the group member is operating in the secondnetworking mode comprises determining that the computing device is incommunication with the group member via a second type of network link.4. The computing device of claim 2, wherein determining whether a groupmember is operating in the first networking mode comprises determiningwhether one or more packets are to be transmitted between the computingdevice and the group member without traversing one or more intermediatenetwork devices, and wherein determining whether the group member isoperating in the second networking mode comprises determining whetherone or more packets are to be transmitted between the computing deviceand the group member via a router.
 5. The computing device of claim 2,wherein determining whether a group member is operating in the firstnetworking mode comprises determining whether the computing device is incommunication with the group member via an ad-hoc network link, andwherein determining whether the group member is operating in the secondnetworking mode comprises determining whether the computing device is incommunication with the group member via an ad-hoc network link.
 6. Thecomputing device of claim 1, wherein the functions further comprise:receiving a request to join the group from a prospective group member,wherein the request to join the group comprises a unicast networkaddress of the prospective group member; and in response to receivingthe request to join the group from the prospective group member, addingthe prospective group member to the group as a new group member andstoring an indication of the unicast address of the new group member. 7.The computing device of claim 1, wherein the computing device comprisesa playback device, wherein each group member in the group comprises aplayback device, wherein the stream of packets comprises media contentand playback timing for the media content, wherein the playback timingis generated by the computing device, and wherein the computing deviceis configured to use the playback timing to play the media content insynchrony with the group members.
 8. The computing device of claim 1,wherein each group member in the group comprises a playback device,wherein the stream of packets comprises media content and playbacktiming for the media content, wherein the playback timing is generatedby the computing device, and wherein the computing device is configuredto transmit the stream of packets to the group members in a mannersufficient to enable the group members to use the playback timing toplay the media content in synchrony with each other.
 9. The computingdevice of claim 1, wherein the stream of packets comprises media contentand playback timing for the media content, wherein the playback timingis generated by the computing device, and wherein functions furthercomprise: generating and transmitting packets comprising clock timinginformation from the computing device to each group member, wherein theclock timing is sufficient for use with the playback timing by the groupmembers to play the media content in synchrony with each other.
 10. Thecomputing device of claim 9, wherein generating and transmitting packetscomprising clock timing information from the computing device to eachgroup member comprises transmitting the packets comprising the clocktiming information to the unicast network address of each group member.11. Tangible, non-transitory computer-readable media comprisinginstructions stored therein, wherein the instructions, when executed,cause a computing device to perform functions comprising: for a streamof packets to be transmitted to a group comprising one or more groupmembers, wherein each group member has a unicast network address, (i)for each group member operating in a first networking mode, transmittingthe stream of packets to a multicast network address for the group, and(ii) for each group member operating in a second networking mode,transmitting the stream of packets to the unicast network address of thegroup member.
 12. The tangible, non-transitory computer-readable mediaof claim 11, wherein the functions further comprise: for each groupmember in the group, determining whether (i) the group member isoperating in the first networking mode or (ii) the group member isoperating in the second networking mode.
 13. The tangible,non-transitory computer-readable media of claim 12, wherein determiningwhether a group member is operating in the first networking modecomprises determining that the computing device is in communication withthe group member via a first type of network link, and whereindetermining whether the group member is operating in the secondnetworking mode comprises determining that the computing device is incommunication with the group member via a second type of network link.14. The tangible, non-transitory computer-readable media of claim 12,wherein determining whether a group member is operating in the firstnetworking mode comprises determining whether one or more packets are tobe transmitted between the computing device and the group member withouttraversing one or more intermediate network devices, and whereindetermining whether the group member is operating in the secondnetworking mode comprises determining whether one or more packets are tobe transmitted between the computing device and the group member via arouter.
 15. The tangible, non-transitory computer-readable media ofclaim 12, wherein determining whether a group member is operating in thefirst networking mode comprises determining whether the computing deviceis in communication with the group member via an ad-hoc network link,and wherein determining whether the group member is operating in thesecond networking mode comprises determining whether the computingdevice is in communication with the group member via an ad-hoc networklink.
 16. The tangible, non-transitory computer-readable media of claim11, wherein the functions further comprise: receiving a request to jointhe group from a prospective group member, wherein the request to jointhe group comprises a unicast network address of the prospective groupmember; and in response to receiving the request to join the group fromthe prospective group member, adding the prospective group member to thegroup as a new group member and storing an indication of the unicastaddress of the new group member.
 17. The tangible, non-transitorycomputer-readable media of claim 11, wherein the computing devicecomprises a playback device, wherein each group member in the groupcomprises a playback device, wherein the stream of packets comprisesmedia content and playback timing for the media content, wherein theplayback timing is generated by the computing device, and wherein thecomputing device is configured to use the playback timing to play themedia content in synchrony with the group members.
 18. The tangible,non-transitory computer-readable media of claim 11, wherein each groupmember in the group comprises a playback device, wherein the stream ofpackets comprises media content and playback timing for the mediacontent, wherein the playback timing is generated by the computingdevice, and wherein the computing device is configured to transmit thestream of packets to the group members in a manner sufficient to enablethe group members to use the playback timing to play the media contentin synchrony with each other.
 19. The tangible, non-transitorycomputer-readable media of claim 11, wherein the stream of packetscomprises media content and playback timing for the media content,wherein the playback timing is generated by the computing device, andwherein functions further comprise: generating and transmitting packetscomprising clock timing information from the computing device to eachgroup member, wherein the clock timing is sufficient for use with theplayback timing by the group members to play the media content insynchrony with each other.
 20. The tangible, non-transitorycomputer-readable media of claim 19, wherein generating and transmittingpackets comprising clock timing information from the computing device toeach group member comprises transmitting the packets comprising theclock timing information to the unicast network address of each groupmember.